【发布时间】:2014-05-18 15:46:10
【问题描述】:
我正在构建一个 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');
仍未找到新的控制器。所以,我不知道我错过了什么。或者,如果有另一种方法可以动态“加载”我的类。
需要考虑的事项:
- 安全隐患:当然,但我的问题是广泛开放的,以在执行时动态识别新类
- 我完全确定路径,我已经从 linux 终端测试了所有问题并且一切正常(使用绝对路径和相对路径)。由于这些原因,我寻找其他原因而不是路径。
-
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
【问题讨论】:
-
您确定您的作曲家知道在哪里可以找到这些上传的课程吗?假设您已将该文件夹添加到您的作曲家类映射中?
-
是的,完全确定。为什么? 1. 因为类被放在 /app/controllers 文件夹中。 2. 因为如果我直接从终端执行
composer dump-autoload,类会按照我的预期加载到我的应用程序中 -
"但是,php 没有足够的权限这一事实怎么可能,它会影响 composer dump-autoclass 命令吗?" -- 因为如果进程无法将编译后的文件写入目录,结果就好像你没有运行命令
标签: php linux laravel-4 composer-php