從Prov2.2版本之后composer安裝的擴展基本要求php版本要在7.4之上包括7.4
為了用戶安裝可以選擇多個php版本,無奈之下改了vendor兼容了7.1-7.4版本,但是我們強烈建議您使用php7.4版本。
如果開發者想更新composer一定要切換到php7.4版本進行安裝擴展;
問題1:composer update 更新后隊列無法執行,各種報錯
可能原因: 可能原因是自動升級了think-queue;可能原因是升級了各種擴展導致不兼容或者類文件丟失等等。問題很多;
處理方法:不要盲目使用composer update,如果需要更新某個擴展請使用:
問題2:多個php版本開發中應該選擇哪個版本?
答: 果斷選擇PHP7.4,可能會在之后版本逐漸淘汰7.4之下的版本;也是為了更好的性能;
問題3: composer怎么安裝指定版本擴展?
答: composer require 擴展名:~5.0
問題4:安裝擴展后,后臺前臺無法訪問?
答: 檢查vendor/services.php
文件內是否是空的,如果是空的。那就是證明安裝到最后一步執行php think service:discover
失敗了,可以直接執行:composer dump-autoload
。然后去看vendor/services.php
文件是否恢復正常
問題5:composer2.0版本安裝擴展后執行php think service:discover
還是無法訪問?
找到vendor\topthink\framework\src\think\console\command\ServiceDiscover.php
文件
32行左右,在此行上增加代碼,如下代碼,然后保存,在執行php think service:discover
if (isset($packages['packages'])) {
$packages = $packages['packages'];
}
$services = [];
foreach ($packages as $package) {
if (!empty($package['extra']['think']['services'])) {
$services = array_merge($services, (array) $package['extra']['think']['services']);
}
}
修改了topthink底層文件是否影響之后的擴展安裝,肯定是會的。還有一種辦法就是升級·topthink框架,框架已經兼容了composer2.0版本的上述問題
問題6:按照上面兩種辦法都不能正常訪問網站?
手動修改vendor/services.php
文件,在文件中增加如下代碼
return array (
0 => 'think\\captcha\\CaptchaService',
1 => 'think\\app\\Service',
2 => 'think\\queue\\Service',
);