我试图使用Forge + DigitalOcean发布我的新laravel项目,但由于' php artisan optimize'我收到了错误消息(我们无法在您的服务器上安装项目)。命令返回'提供的文件名无效。'错误。
所以我修改了我的.env文件并将APP_DEBUG设置为false并尝试在本地运行该命令。我收到以下错误:
php artisan optimize -v
生成优化的类加载器 编译公共类
[RuntimeException的]
提供的文件名无效。
异常追踪: ()athome/bubut/Code/TalalAttendance/vendor/classpreloader/classpreloader/src/ClassPreloader.php:105 ClassPreloader \ ClassPreloader-> getCode()athome/bubut/Code/TalalAttendance/vendor/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php:89 在/home/bubut/Code/TalalAttendance/vendor/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php:70照亮\ Foundation \ Console \ OptimizeCommand-> compileClasses() 在n / a:n / a处照亮\ Foundation \ Console \ OptimizeCommand-> fire() call_user_func_array()athome/bubut/Code/TalalAttendance/bootstrap/cache/compiled.php:1138 在/home/bubut/Code/TalalAttendance/vendor/laravel/framework/src/Illuminate/Console/Command.php:150照亮\容器\容器 - > call() 在/home/bubut/Code/TalalAttendance/vendor/symfony/console/Command/Command.php:258照亮\控制台\命令 - >执行() Symfony \ Component \ Console \ Command \ Command->运行()/home/bubut/Code/TalalAttendance/vendor/laravel/framework/src/Illuminate/Console/Command.php:136 在/home/bubut/Code/TalalAttendance/vendor/symfony/console/Application.php:827照亮\ Console \ Command-> run() Symfony \ Component \ Console \ Application-> doRunCommand()/home/bubut/Code/TalalAttendance/vendor/symfony/console/Application.php:191 Symfony \ Component \ Console \ Application-> doRun()/home/bubut/Code/TalalAttendance/vendor/symfony/console/Application.php:122 Symfony \ Component \ Console \ Application-> run()athome/bubut/Code/TalalAttendance/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:100 Illuminate \ Foundation \ Console \ Kernel-> handle()at / home / bubut / Code / TalalAttendance / artisan:36
答案 0 :(得分:2)
Laravel允许您指定要编译的其他文件 - 通常是应用程序中每个请求使用的文件。
文件列表在/config/compile.php
数组的files
中指定。如果你在那里指定了一个文件,但它不存在(或者位置错误),那么工匠在尝试编译时会抛出该错误。
同样的事情发生在我身上,从列表中删除不存在的文件解决了我的问题。
答案 1 :(得分:1)
同样的问题toady,在Illuminate \ Foundation \ Console \ OptimizeCommand中调试后,我发现供应商文件夹中缺少某些symfony组件,即使出于某种原因使用composer install / update命令。
删除vendor文件夹下的内容,然后执行composer update以查看是否缺少组件。或者git clone整个项目和作曲家更新。请注意,composer install将检查composer.lock,如果它存在且组件丢失,则触发问题。
答案 2 :(得分:0)
注意:有关其他信息
如果您的文件位于app文件夹中的文件夹中,则应按列出这些文件。
'files' => [
'app/your_folder_name/file_a.php',
'app/your_folder_name/file_b.php',
'app/your_folder_name/file_c.php',
]
希望这可以帮助任何人编译自定义函数。