laravel artisan使用未定义的常量STDIN - 假设' STDIN'无限循环

时间:2018-04-10 06:06:19

标签: php laravel stdin infinite-loop artisan

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

promise2 = new Promise((resolve,reject) => {
    binance.prevDay(coin + `BTC`, (error, prevDay, symbol) => {
        for (var obj in prevDay) {
            if (obj.includes("priceChange")) {
                _add24h["24h Change"] = `\u0E3F` + prevDay[obj];
            }
        }
        resolve(_add24h);
    })
    }).then(function(_add24h) {
        return new Promise ((resolve,reject) => {
            binance.prevDay(coin + `USDT`, (error, prevDay, symbol) => {
                for (var obj in prevDay) {
                    if (obj.includes("priceChange")) {
                         _add24h["24h Change"] = _add24h["24h Change"] + "\n$" + parseFloat(prevDay[obj]).toFixed(2);
                    }
                }
            })
        })
        resolve(_add24h);
    })

Promise.all([promise1,promise2]).then(function(_addFields) {
    Object.keys(_addFields).forEach(function(prop) {
        Object.keys(_addFields[prop]).forEach(function(key) {
            embed.addField(key,_addFields[prop][key],true)
        });
    });
    message.channel.send({embed});
});

问题是,这些消息看起来是无限的,直到我关闭控制台或很长一段时间后它才会终止进程。

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

当我使用" php artisan migrate"

时,会出现同样的问题

4 个答案:

答案 0 :(得分:3)

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

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

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

现在可行。

它仍然很奇怪,因为通常工匠应该开箱即用,而不需要改变任何东西。

答案 1 :(得分:3)

在生产中运行artisan命令为db表设置种子时,我遇到了上面提到的问题:Artisan::call('db:seed', [...])。 添加--force标志可以解决我的问题

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

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

答案 2 :(得分:0)

要检查的一件事是确保您为Laravel版本运行正确版本的PHP。

df3 = df1[3] - df2[3] 将显示php版本

我很惊讶地看到,对我来说,PHP的CLI版本(这是工匠使用的)真的很旧。

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

我可以使用与我需要使用的PHP版本对应的命令来运行artisan命令:php -v

答案 3 :(得分:0)

添加

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

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