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