我在这里遇到了一个小问题。
我使用的是Ubuntu 22.04,我在本地使用php 8.1和composer 2.2.6,一切都很好,但现在我的项目需要php 7.4,所以我安装了php v7.4,并将其更改为我的系统的全局版本。
现在的问题是它找不到作曲家。
当我运行composer、composer install、composer-v或类似程序时,会出现此错误。
PHP分析错误:语法错误,意外的"|",第163行/usr/share/PHP/Composer/IO/BaseIO.PHP中应为变量(T_variable(分析错误:语法错误,意外的"|",第163行/usr/share/php/Composer/IO/BaseIO.php中应为变量(T_variable(
你们中的一些人知道问题出在哪里吗?我应该为phpv7.4安装composer吗?
我的设置与OP:Ubuntu 22.04.1 LTS和一个需要PHP 7.4.x的项目几乎相同,当我试图在项目文件夹内外运行带有任何参数的composer时,我得到了完全相同的错误消息。我安装了composersudo apt-get install composer
和apt show composer -a
给了我2.2.6作为存储库版本。
主要的区别是,我没有安装PHP 8.x,因为我不需要它(我安装了php7.4和带有ppa:ondrej/PHP存储库的扩展(,所以我无法切换我的PHP版本。
对我来说有效的是用sudo apt-get remove composer
删除composer,然后按照composer官方网站上的下载指南:https://getcomposer.org/download/
警告:他们明确表示不要重新分发安装代码,因为它会随着每个版本而更改,而是链接到下载页面(完成(。我无论如何都会这么做,因为当前的最新版本(发布时为2.4.2(适用于OP问题中指定的相同情况,并用于文档目的。
如何在本地安装Composer(可能需要sudo,如果版本发生变化,第二行哈希将有所不同(:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
之后,如果你想在全局范围内使用它,请将它放在PATH中的某个位置,例如:
sudo mv composer.phar /usr/local/bin/composer
composer --version
和运行安装/更新现在应该可以工作了
我只需再次安装composer就解决了这个问题,但将php 7.4作为php verison全局使用,现在它可以同时使用(php 7.4和php 8.1(。
尝试全局删除并重新安装composer:
#删除Compser:
sudo apt-get remove composer
#安装composer:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
#此程序在全局范围内安装composer:
sudo mv composer.phar /usr/bin/composer
#在项目中使用composer:
composer install