【问题标题】:Why are my custom laravel artisan commands not available in production environment为什么我的自定义 laravel artisan 命令在生产环境中不可用
【发布时间】:2014-05-02 22:56:49
【问题描述】:

我刚刚在“未来”生产服务器(1and1 共​​享 linux 服务器)上安装了一个 laravel 应用程序。

使用与我的开发服务器(Ubuntu 14.04 lts)相同的代码库,我的自定义工匠命令在生产服务器上不可用(php5.5 工匠列表)。

我已经完成了 composer dump-autoload。 我还检查了 app/start/artisan.php 文件,没问题并已执行。 我已经检查了服务提供商的 app/config/production/app.php,他们似乎没问题。

我也花了一天的大部分时间在 stackoverflow 上寻找解决方案,但没有太大成功。

我的 Laravel 版本是:4.1.28

非常感谢您的帮助。

【问题讨论】:

  • 当您尝试运行命令时会发生什么?
  • 迁移等所有命令都照常工作。由于我没有在列表中看到我的命令,我收到:[InvalidArgumentException] “myCommand”命名空间中没有定义命令。

标签: php laravel


【解决方案1】:

如果您没有收到任何错误,您可能在生产环境中没有相同的代码库,因为如果在您的 artisan.php 文件中解析命令:

Artisan::resolve('CommandName');

而 Laravel 无法访问这个类,它会引发异常:

"ReflectionException","message":"Class CommandName does not exist"

【讨论】:

  • 感谢您的回答。在使用中:Artisan::add(new myCommand);在 app/start/artisan.php
  • 此代码在您的生产服务器中吗?你检查过文件是否存在?
  • 是的,文件在那里。 app/commands 中的命令和 vendor/composer/autoload_classmap.php 中的类加载器也是如此
  • @haemhweg:不,不幸的是还没有。我已经问过 Laravel、Twitter 等的 IRC 频道。当我刚刚看到你的帖子时,我有点庆幸自己至少不是一个人 :-)。希望我们能尽快找到一些东西。我一定会及时通知您。
  • 是的,有点奇怪。在生产环境中调试后,该应用实际上“访问”了定义命令 app/commands/MyCommand.php 和注册命令 app/start/artisan.php 的源文件,但命令甚至没有出现在命令列表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2020-05-31
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多