我正在使用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"
时,会出现同样的问题答案 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版