ChatGPT解决这个技术问题 Extra ChatGPT

如何更改作曲家使用的 PHP 版本

我想在我的机器上使用另一个 php 版本,而不是使用 WAMP (2 PHP version installed) 安装的那个。

安装的作曲家使用 PHP 5.6

一个新项目需要 PHP7.0。

每当我从 WAMP 的控制面板中选择 PHP 7 然后运行 php -v 时,它仍然会打印 PHP5.6 (CLI)... 而不是 PHP7

如何在不重新安装作曲家的情况下使用 PHP7?

为什么没有一个 linux 答案? :(
我假设是因为 OP 指定了 WAMP ......
@托凡德尔。 OP(原始海报)参考 WAMP,它代表 Windows、Apache、MySQL 和 PHP。如果您需要 LAMP 解决方案(Linux、Apache、MySQL 和 PHP),则需要参考您选择的 LAMP 软件文档和任何相关的解决方法。

g
geeky

您可以在不卸载 Composer 的情况下更改 php 版本,请按照下列步骤操作:

在 cortana 中搜索系统环境变量。单击“环境变量”按钮。在“系统变量”下选择路径并单击编辑,您将看到一个类似“C:\wamp\bin\php\php5.6.13”的条目。只需将其更改为位于您的 wamp/bin/php7.1.9 的 php 的文件夹名称,这里 php7.1.9 是文件夹名称。将 php5.6.13 替换为 bin7.1.9,它看起来像“C:\wamp\bin\php\php7.1.9”,只需在所有框上单击“确定”即可。你完成了。要验证,首先关闭所有 cmd 窗口,然后打开 cmd 并输入 php -v,回车,您应该会看到 php7.1.9。如果您没有看到 php 版本的变化,而只是重新启动您的电脑并在 cmd 中再次运行 php -v ,它将起作用。


这可行,但是 wamp 服务器说它有一个错误并且它检测到环境变量的变化。
如果 wamp 服务器显示有关环境变量更改检测的错误,我建议您重新启动服务器。如果它没有解决,则关闭服务器并重新启动它。如果这也不起作用,我建议您重新启动您的电脑。希望能帮助到你 :)
关于第 3 步,对我来说,它位于“用户变量”而不是“系统变量”下。但其他一切都有效😄
它对我有用。非常感谢
您可以使用多个 php 版本,例如 stackoverflow.com/questions/15617515/…,然后您只需要根据您的要求更改上移版本
S
Skeets

如果您使用的是 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

这行 C:\full\path\to\php.exe C:\full\path\to\composer.phar install 有什么用。我已经有了 composer.phar 文件,因为我已经在我当前的项目中使用了 composer
作曲家 phar 的例子是金! Finnaly 让它工作,不需要无休止的环境变量切换。太多了!
对于 Linux/MacOS 用户,类似于:/Applications/MAMP/bin/php/php7.2.14/bin/php /usr/local/bin/composer install
0
0CDc0d3r

如果还有人遇到问题,请记住您可以使用已安装的任何 php 版本运行 composer,例如 $ php7.3 -f /usr/local/bin/composer update

使用 which composer 命令帮助定位 Composer 可执行文件。


更难理解你的回复。 windows环境下如何使用?
F
Furai

让 composer 认为您使用的是正确版本的 PHP 的另一种方法是在 composer.json 文件的 config 部分添加一个 platform option,如下所示:

"config": {
    "platform": {
        "php": "<ver>"
    }
},

其中 <ver> 是您选择的 PHP 版本。

来自文档的片段:

允许您伪造平台包(PHP 和扩展),以便您可以模拟生产环境或在配置中定义目标平台。示例:{“php”:“7.0.3”,“ext-something”:“4.0.3”}。


完美的!。它适用于 drupal composer.json。谢谢@Furai。
它对我有用,但在 composer dump-autoload 上遇到问题
@JayMomaya,您可以尝试将 --ignore-platform-reqs 选项添加到您的命令中。
V
Vincent V

我找到了一个非常简单的方法来切换 php 版本:

搜索系统环境变量

点击“环境变量”

在“系统变量”下选择路径并单击编辑

将您要使用的 PHP 版本文件夹移到另一个文件夹之前。例如:现在将使用 php 7.0:

https://i.stack.imgur.com/JgDDj.png

单击“确定”关闭所有窗口

关闭所有 cmd 窗口,然后打开 cmd 并输入 php -v

您将看到现在加载了正确的 php 版本:


这不就是三年多前geeky给出的答案吗?
极客谈论更改文件夹名称,但我发现只需更改文件夹的顺序就足够了,因为您可能想改回来。在我看来,这使它变得更简单,更易于管理。
我喜欢你的版本,因为 geekys 的回答也提到了 WAMP,有些人没有安装。
t
themroc

我发现 composer 使用 $PATH 中首先找到的 php-version /usr/bin/env 运行,在我的 MacOs 上是 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

D
Dananjaya

https://i.stack.imgur.com/F540I.png

这就是我的情况。我希望这可能对遇到相同情况的人有所帮助。我正在使用带有 MAMP 的 macOS Monterey。

我使用 ~/.profile 文件链接了 php 7.4。所以终端说我正在使用php 7.4。但是,我的作曲家仍然给出一个错误,说我正在使用 php 7.3。

所以我使用检查 php 路径

which php

这给了我 /usr/local/bin/php 作为我的 php cli 位置。所以我删除了该文件并为我的 php7.4 建立了一个符号链接,并且工作得很好。

sudo rm -rf /usr/local/bin/php
sudo ln -s /Applications/MAMP/bin/php/php7.4.21/bin/php /usr/local/bin/php

D
Dennis Maina

在互联网上进行长时间搜索并找到许多不相关的答案/对我不起作用的答案后,这对我有用。共享主机中的人都知道 bin 目录是写保护的,并且不允许运行 sudo 命令或任何系统范围的命令。

有两种方法可以解决这个问题:

直接在您的项目文件夹上运行命令,选择您需要的适当 PHP 版本。 ea-php80 /opt/cpanel/composer/bin/composer update 要在您的服务器上获取可用的 PHP,请键入 ea-php 并点击 TAB 以查看列表。给作曲家起一个别名

运行这个命令来编辑/制作这个文件 nano ~/.bashrc

在该文件中,输入 alias composer="ea-php80 /opt/cpanel/composer/bin/composer"

这使您可以像往常一样灵活地运行作曲家命令,而无需那些长的尾随字符串


m
midnight-coding

我知道的老问题,但只是添加一些额外的信息:

WAMP 仅用于 Microsoft Windows 操作系统。

通过左键单击更改使用的 PHP 版本 -> PHP -> 版本菜单会更改 Apache 用于服务器站点的版本。

通过右键单击 -> 工具 -> 更改 PHP CLI 版本菜单更改使用的 PHP 版本,更改 WAMP 的 PHP CLI 使用的版本。

注意:重要的是要了解 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:由于Users Environmental Path的值为字符串,所有添加的路径必须用分号(;)隔开

在遇到完全相同的问题(IE:选择我希望 Composer 使用的 PHP 版本)之后,我创建了一个脚本,该脚本可以根据我正在处理的项目轻松快速地在 PHP CLI 版本之间切换。

Windows 批处理脚本“WampServer-PHP-CLI-Version-Changer”位于 https://github.com/custom-dev-tools/WampServer-PHP-CLI-Version-Changer

我希望这对其他人有帮助。

祝你好运。


a
alsocodes

如果您在 windows 中更改环境变量后仍然遇到问题,请尝试删除目录或重命名旧 php.ini 的目录。我已经做到了,它的工作。


K
K. Kilian Lindberg

通过标题来到这里,但问题指定了 WAMP;这可能不容易适用。所以,就我而言 - 使用 Mac .. 更像是 MAMP - 如果您安装了 brew 和以下版本,这可能会有所帮助 - 作曲家会选择它。

brew link --overwrite --force php@8.1
php -v
#PHP 8.1...

brew link --overwrite --force php@7.4
php -v
#PHP 7.4...