我在互联网上做了很多研究,我发现我的问题很多,但它们并不完全是我所拥有的。我想要的是在我的机器中使用另一个使用WAMP (2 PHP version installed)
安装的php版本。我还安装了composer并使用PHP5.6
版本。我有一个新项目需要< PHP7.0
。每当我从WAMP的控制面板中选择PHP 7然后运行php -v
时,它仍然会打印PHP5.6 (CLI)...
而不是PHP7
。
如何在不重新安装作曲家的情况下使用PHP7?
答案 0 :(得分:20)
您可以在不卸载的情况下更改phper的composer版本,请按照以下步骤操作:
php -v
,按回车键,您应该看到php7.1.9。php -v
,它就能正常工作。答案 1 :(得分:10)
如果仍有问题,请记住您可以使用已安装的任何php版本运行composer,例如$ php7.3 -f /usr/local/bin/composer update
使用which composer
命令来帮助查找作曲家的可执行文件。
答案 2 :(得分:5)
如果您正在使用WAMP,我会假设Windows。 Composer可能只是在您的路径中使用PHP集:How to access PHP with the Command Line on Windows?
您应该能够使用相同的说明更改PHP的路径。
否则,composer只是一个PHAR文件,您可以下载PHAR并使用任何PHP执行它:
C:\full\path\to\php.exe C:\full\path\to\composer.phar install
答案 3 :(得分:5)
另一种让 Composer 认为您使用的是正确版本的 PHP 的可能性是在 config
文件的 composer.json
部分添加一个 platform option,如下所示:
"config": {
"platform": {
"php": "<ver>"
}
},
其中 <ver>
是您选择的 PHP 版本。
来自文档的片段:
<块引用>允许您伪造平台包(PHP 和扩展),以便您可以模拟生产环境或在配置中定义目标平台。示例:{"php": "7.0.3", "ext-something": "4.0.3"}。
答案 4 :(得分:1)
我发现composer与php版本一起运行/ usr / bin / env首先在$ PATH中找到,在我的MacO上是7.1.33。 因此,将Mamp的php迁移到开始时对我有帮助。
PHPVER=$(/usr/libexec/PlistBuddy -c "print phpVersion" ~/Library/Preferences/de.appsolute.mamppro.plist)
export PATH=/Applications/MAMP/bin/php/php${PHPVER}/bin:$PATH
答案 5 :(得分:1)
我知道一个老问题,不过只是添加一些其他信息:
注意:重要的是要了解WAMP自己的内部PHP脚本使用了“ PHP CLI版本”。此“ PHP CLI版本”与您希望用于脚本,Composer或其他任何版本的版本无关。
要使脚本使用所需的版本,您需要将其路径添加到“用户环境路径”。您可以将其添加到“系统”环境路径中,但建议使用“用户路径”。
从WAMP v3.1.2开始,它在检测到对系统或用户环境路径中的PHP路径的引用时将显示错误。这是为了避免您遇到的混乱。从v3.1.7开始,现在可以通过WampSettings菜单中的选择来选择性地显示此错误。
如之前的答案所示,将安装的PHP路径(例如“ C:\ wamp64 \ bin \ php \ php7.2.30”)添加到“用户环境路径”是正确的方法。 PS:由于“用户环境路径”的值是一个字符串,因此所有添加的路径都必须用分号(;)分隔
遇到了完全相同的问题(即:选择我希望使用Composer的PHP版本)后,我创建了一个脚本,可以根据正在处理的项目轻松,快速地在PHP CLI版本之间进行切换。
可以在https://github.com/custom-dev-tools/WampServer-PHP-CLI-Version-Changer上找到Windows批处理脚本“ WampServer-PHP-CLI-Version-Changer”
希望这对其他人有帮助。
祝你好运。
答案 6 :(得分:0)
我找到了一个非常简单的方法来切换 php 版本:
答案 7 :(得分:-1)
以上答案绝对解决问题。但是,如果您不想每次都自己更改 Path
ENV 变量,我使用 C++ 创建了一个工具,它可以通过非常简单的 cli 界面为您完成这项工作。
PHP Version Switcher Github Repo
<块引用>它只修改用户路径变量而不是系统路径变量(除了可访问性之外,两者的工作方式相同)
示例用法(切换到另一个php版本):
switcher set --version=80
答案 8 :(得分:-1)
如果在windows中更改环境变量后仍然遇到问题,请尝试删除目录或重命名旧php的目录。 我已经完成了,并且成功了。