最近用Laravel + js框架部属在学校的Linux apache的子网域
但因为Laravel + js框架使用的是设定好的mix方式打包,在路径改变导致了不少麻烦
在这边纪录一下遇到的问题以及自己的解决办法:
1. server找不到首页
通常子使用者的home底下会有public_html资料夹
把专案複製贴在home后,把public里的东西全部複製到public_html里面
(或是改伺服器预设的位置,不过学校的伺服器不方便我做更改)
网页的网址会在
网域名/~子使用者名称/index.php
2. The stream or file "/home/子使用者/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
解决办法可以参考这篇
能使用775就用775,777比较危险。
3. 找不到app.js ( /js/app.js is not found 404 )。
将 resources/views/index.blade.php 中的
<script src="{{ mix('js/app.js') }}"></script>
改成
<script src="{{ asset(mix('/js/app.js')) }}"></script>
4. 使用 ajax/fetch/axios 的时候url失效。
因为使用subdomain,Laravel提供api的url也会跟着改变,但Js的local仍然是没有加入子网域的路径。
假设原本的路径为
/api/get/data
上面的路径会回传404,必须改成下面这样,要加入首页的路径:
/~子使用者名称/index.php/api/get/data
5. 在使用前端router的状况下,使用href或是location.href无法连结到设定的页面。
处理方法类似4,比较特别的是如果是使用hashRouter
假设原本的路径为
/#/home
必须改成下面这样,注意在index.php的后面是直接加井字号:
/~子使用者名称/index.php#/home
6. 读取不到local图片
这个比较特别,我目前使用的方式是在打包后
直接去public_html资料夹(或是public)修改app.js
CTRL+F搜寻/images
全部改成/~子使用者名称/images
虽然这个方法有效,但我不确定是否有更好的方法。