Laravel 5.8.38本地运行报错:public/index.php缺失,线上正常
Laravel 5.8
php artisan serve 找不到public/index.php的解决方法 问题原因
你的项目在服务器上做了目录结构调整:原本Laravel的入口文件index.php应该在public目录下,但服务器部署时可能把public目录的入口文件移到了项目根目录,同时修改了路径指向,所以本地用默认的php artisan serve命令时,会默认去public目录找index.php,自然找不到。
解决方法
方法一:临时指定入口运行(无需修改项目)
直接用PHP内置服务器指定根目录的index.php作为入口,代替artisan serve:
php -S localhost:8000 index.php
或者用artisan serve的参数自定义入口路径:
php artisan serve --public=./ --index=index.php
方法二:恢复标准Laravel结构(适合长期开发)
如果需要和Laravel标准结构保持一致,方便后续维护,按以下步骤操作:
- 将根目录下的
index.php、.htaccess移动到public目录中 - 打开
public/index.php,修改文件路径引用:
将原本的
修改为require __DIR__.'/vendor/autoload.php'; $app = require_once __DIR__.'/bootstrap/app.php';require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; - 之后再运行
php artisan serve就能正常启动,因为此时public目录下已经有正确的入口文件了。
补充:如果后续部署到服务器,只需再将
public目录下的index.php、.htaccess移回根目录,改回原来的路径即可,或者直接配置服务器的网站根目录指向项目的public目录,这样本地和服务器结构一致,避免重复调整。
内容的提问来源于stack exchange,提问作者citc goldskin
相关产品推荐
相关产品推荐

