我正在构建一个Web应用程序,用户可以动态地从Web浏览器上传Controllers php文件。所有这一切都存在问题。
由于每个类都应该按照在laravel中使用的顺序进行编译,因此必须执行命令composer dump-autoload
。但我不想从终端手动执行此操作。在"注册类"我已经明确地调用了一些对我没用的命令,例如:
Artisan::call('dump-autoload');
exec("/path/to/app/composer dump-autoload");
shell_exec('php artisan dump-autoload');
shell_exec('composer dump-autoload');
仍未找到新控制器。所以,我不知道我错过了什么。或者,如果有另一种方式来加载"我的课程动态。
Don't forget to actually 'require' or 'include' the class after you compile it
当然,该文件包含在第2点并经过确认。这看起来很可疑:
我的袖口猜测是运行php的用户没有足够的权限来执行操作或写入所需的目录
但是,php怎么可能没有足够的权限,可能会影响composer dump-autoclass
命令?
Apache / 2.4.9(Fedora)PHP / 5.5.12
答案 0 :(得分:3)
要解决这个问题,你可以这样做:
exec("composer dump-autoload -d /path/to/laravel-project/");
你必须明确告诉作曲家在哪里寻找composer.json
。
-d
如果指定,则使用给定目录作为工作目录
如果没有-d
选项,则编辑会假定您的composer.json
位于path/to/laravel-project/public/
。因为所有请求都路由到前端控制器index.php
,因此当前工作目录为public/
答案 1 :(得分:2)
这里没有足够的信息来帮助我们。
需要考虑的事项:
如果可以,请尝试使用其他信息更新您的问题。