報錯圖:
問題原因
我們簡單翻譯一下提示資訊就可以看到,整體說的是laravel/horizon
依賴或者需要ext-pcntl
擴充,我們可以在php.ini
中修改並使用。這就是大概的意思,但是我去php.ini找了,沒有找到。
解決辦法
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true,
"platform": {
"ext-pcntl": "7.2",
"ext-posix": "7.2"
}
},
可以看到,我們可以在composer.json檔案裡面的config裡面加上platform
配置,樓主執行了一下,完美解決。可是這是為什麼呢?
從stackoverflow上找到了答案,該錯誤表明未安裝PCNTL PHP擴充套件,並且Horizon需要提供此擴充套件的PHP環境。
PCNTL擴充套件為Unix風格的程式管理和信令提供了一個API。由於其固有的重點是僅在類似Unix或Linux的作業系統中可用的功能,因此此擴充套件不支援Windows,如文件中所述:
注意:此副檔名在Windows平臺上不可用。
通過此API,Laravel Horizon使用PHP 7.1新增的非同步訊號處理功能來管理佇列工作程式。因此,Horizon當前不支援Windows,Windows開發人員需要使用虛擬環境(例如Homestead)來安裝和執行Horizon。
我們加上這兩項就可以安裝的原因就是我們設定忽略了版本匹配,如果有不對的地方,歡迎大家修改指正。