php - 来自 php 的 dump-autoload 命令

标签 php linux laravel-4 composer-php

我正在构建一个网络应用程序,用户可以在其中动态地从网络浏览器上传 Controller 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');

仍未找到新的 Controller 。所以,我不知道我错过了什么。或者是否有另一种方法可以动态“加载”我的类。

需要考虑的事项:

  1. 安全隐患:当然,但我的问题是广泛开放的,可以在执行时动态识别新类
  2. 我完全确定路径,我已经从 Linux 终端测试了每一个问题,并且一切正常(使用绝对和相对路径)。由于这些原因,我寻找其他原因而不是路径。
  3. 不要忘记在编译后实际“要求”或“包含”该类当然,该文件已包含并由第 2 点确认。
  4. 这看起来很可疑:

    my off-the-cuff guess would be that the user running php doesn't have sufficient privileges to perform the operation or write to the required directories

    但是,php怎么可能没有足够的权限,会不会影响了composer dump-autoclass命令?

  5. Apache/2.4.9 (Fedora) PHP/5.5.12

最佳答案

要解决这个问题,您可以这样做:

exec("composer dump-autoload -d /path/to/laravel-project/");

您必须明确告诉 Composer 在哪里寻找 composer.json

-d 如果指定使用给定目录作为工作目录

没有 -d 选项,composer 假设你的 composer.json 位于 path/to/laravel-project/public/ 中。因为所有请求都被路由到前端 Controller index.php 并且这意味着当前工作目录是 public/

关于php - 来自 php 的 dump-autoload 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23704140/

相关文章:

PHP/MySQL 更新查询根本不起作用

linux - FFMPEG 在一个命令行中将图像与视频和流结合起来

php - 预测/纠正全文搜索

php - 案例陈述中的问题

php - mysqli->error : Is it for the last query only, 还是来自查询组的最后一个错误?

javascript - 在 PHP 中使用定义的 jQuery 变量

php - 如何使用 Laravel 的 Eloquent ORM 为(可能的)多态关系构建模型

linux - UVC功能配置界面

c - 进程在 "Disk Sleep"时线程还在运行吗?

php - MVC(Laravel)在哪里添加逻辑