【问题标题】:laravel artisan use of undefined constant STDIN - assumed 'STDIN' infinite looplaravel 工匠使用未定义的常量 STDIN - 假定“STDIN”无限循环
【发布时间】:2018-04-10 06:06:18
【问题描述】:

我正在使用 laravel 5.6 并且有问题,当我在控制台中使用命令“php artisan vendor:publish”时,我收到以下错误:

[ERROR] Use of undefined constant STDIN - assumed 'STDIN'
Which provider or tag's files would you like to publish?
 [0] Publish files from all providers and tags listed below
 [1] Provider: Intervention\Image\ImageServiceProviderLaravel5

问题是,这些消息似乎是无限的,直到我关闭控制台或在很长一段时间后它终止了进程。

我在google上找了这个问题,但是只发现stdin的问题,不同的是,有这个问题的人,没有在命令行界面调用artisan,而是直接在php脚本中调用。

当我使用“php artisan migrate”时出现同样的问题

【问题讨论】:

  • 您是否更改了供应商文件夹中的任何文件?可能值得做一个composer update 以防万一。
  • 不,不是手动的。所有更改均由作曲家完成
  • 如果您尝试运行composer update,然后运行vendor:publish 命令有什么不同吗?
  • 我尝试了几次“composer update”,不幸的是它没有任何区别。我之前用的是laravel 5.5,因为问题出现了,我想把laravel升级到5.6是个不错的主意,但这也没什么区别。
  • 我只是想知道您是否安装了导致此问题的软件包。你能分享你的composer show -i 输出吗?

标签: php laravel stdin infinite-loop laravel-artisan


【解决方案1】:

我已经找到了解决问题的方法:

我必须将以下行添加到 artisan 文件(在 laravel 目录中)。

define('STDIN',fopen("php://stdin","r"));

现在可以了。

这仍然很奇怪,因为通常工匠应该开箱即用,无需更改任何东西。

【讨论】:

  • 为避免在所有环境中出现问题,您应该使用if(! defined('STDIN')) define('STDIN', fopen("php://stdin","r"));
  • 我绑定了这个修复,但它不起作用。它仍然说使用 undefined constsnt STDIN
  • 如果有人想知道把这段代码放在哪里,那么public/index.php就是这个地方。仍然不确定为什么它不能开箱即用。
【解决方案2】:

我在运行 artisan 命令播种数据库表时遇到了上述问题:Artisan::call('db:seed', [...]) 在生产中。 添加--force 标志解决了我的问题

Artisan::call('db:seed', [
   '--force' => true
])

如果您在生产中,请确保使用 --force 标志。

【讨论】:

    【解决方案3】:

    添加

    if(! defined('STDIN')) define('STDIN', fopen("php://stdin","r"));
    

    到您的index.php 文件。我尝试将其添加到 artisan 文件但没有用,但将它放在 index.php 中就可以了。 我的 PHP 版本是 Ubuntu 18.04 上的 v. 7.4

    【讨论】:

      【解决方案4】:

      要检查的一件事是确保您运行的 PHP 版本与 Laravel 版本对应。

      php -v会显示php版本

      我很惊讶地发现,PHP 的 CLI 版本(这是 artisan 使用的)真的很旧。

      我没有意识到我的共享主机安装了许多不同版本的 PHP。

      我能够通过使用与我需要使用的 PHP 版本相对应的命令来运行 artisan 命令:php7.1 artisan migrate

      【讨论】:

        【解决方案5】:

        这个问题是由应用环境引起的。 将应用程序环境更改为 local 或在 artisan 命令后添加 --force 参数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-06
          • 1970-01-01
          • 2019-09-30
          • 2018-08-21
          • 2014-05-24
          • 1970-01-01
          • 2021-09-23
          相关资源
          最近更新 更多