如何让 /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,请见谅。

【问题讨论】:

您可以使用 &lt;path-to-php-bin&gt; composer.phar &lt;options&gt; 以特定 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 版本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何让docker以daemon方式运行/bin/bash

Shell之/bin/bash脚本的基础实战

Shell之/bin/bash脚本的基础实战

如何让我的 init.d 脚本更改用户

bashrc和bash_profile

添加 init=/bin/bash 后如何更改 grub.conf