如何让 /bin/bash 在 Composer 中运行所需的 php 版本? [复制]
Posted
技术标签:
【中文标题】如何让 /bin/bash 在 Composer 中运行所需的 php 版本? [复制]【英文标题】:How do I get /bin/bash to run the desired php version in Composer? [duplicate] 【发布时间】:2021-01-19 11:39:23 【问题描述】:php -v
给出 7.4
which php
给出 7.4
带有以下测试文件的php test.php:
<?php
echo phpversion();
?>
给出 7.4
但是当我运行 Craft CMS 的安装/启动脚本时,它正在使用 PHP 5.6 执行文件 Bootup.php。
在什么情况下 bash 脚本可能会默认为旧的 php 版本?我怀疑这可能是 Composer 中的环境变量。以及如何让它使用所需的运行?
如果我要问xy question,请见谅。
【问题讨论】:
您可以使用<path-to-php-bin> composer.phar <options>
以特定 PHP 版本启动 composer。您可能将命令 php
别名为最新版本,但 composer 不知道。
@paskl 如果您有兴趣,我诊断出问题的原因并将我的解决方案发布为答案***.com/a/64198753/7799269。您的解决方案是否解决了我的回答中解释的问题,您知道吗?
@NicoHaase 是的,伯尼的回答涵盖了我的情况。谢谢。 ***.com/a/32752473/7799269
【参考方案1】:
好的,原来composer中的php文件有以下shebang:
#!/usr/bin/env php
出于某种我不完全理解的原因,这具有忽略 ALIAS 并改为在 $PATH 中查找第一个 php 的效果。
所以我选择的解决方案是在 $PATH 中找到第一个 php,将其重命名为 php2,然后使用 ln -s
在该文件夹中创建一个名为 php 的链接,并将其指向正确的 php 版本二进制文件,在我的情况下ln -s /opt/plesk/php/7.4/bin/php php
Composer 和 Craft 现在使用所需的 php 版本运行。
【讨论】:
【参考方案2】:如果你设置了平台,请检查 composer.json 文件
"platform":
"php": "5.6"
它定义了您将在项目中使用的目标平台。
【讨论】:
感谢您的建议。也就是说7.0。但事实证明有一个#!在文件开头指定 /home/env php,这导致它指向 $PATH 中的第一个 php。所以我将其重命名为 php2 并使用 ls 将 php 指向 php7。 这对使用其他版本的 PHP 运行脚本没有帮助。此设置仅用于解析与特定 PHP 版本相关的依赖项以上是关于如何让 /bin/bash 在 Composer 中运行所需的 php 版本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章