Symfony链接到错误的PHP版本


Symfony is linked to the wrong PHP version

我正试图将我的项目移动到使用Apache的linux redhat服务器,但我面临的问题是这个服务器安装了2个不同的PHP版本。

Symfony(2.5.12)似乎在默认情况下查找/usr/bin/php的php可执行文件,但安装了5.2版本,这是其他项目需要的。

/opt/rh/php55/root/usr/bin/php是一个安装的PHP 5.5版本,我想使用symfony。

那么我如何配置Symfony使用安装在自定义路径的php版本?

我知道这是旧的,但我有Symfony的相同问题使用旧的PHP版本(7.1在我的情况下,OSX Mojave的默认版本)比我安装。我的$PATH变量指向较新的7.2版本,php -v显示7.2,Symfony仍然使用7.1。

看起来这个问题已经解决了,当我运行:

symfony local:php:list

它列出了我系统上的所有PHP版本,并将7.2标记为默认版本。在运行此命令并执行symfony server:start之后,它是7.2。

php:list命令还提供了关于为项目设置特定PHP版本的有用说明:

要控制目录中使用的版本,请创建包含版本号(例如7.2或7.2.15)的.php-version文件。如果你正在使用SymfonyCloud,版本也可以在.symfony.cloud.yaml文件中指定。

我在做symfony serve时遇到了同样的问题。

首先,我运行symfony local:php:list来了解我的项目使用的php版本。

然后我运行echo 7.4.9 > .php-version(7.4.9是我下载的最新php版本)来切换我的项目的php版本。

如果是您的web应用程序使用了错误的PHP版本,这是Apache配置问题。如果是命令行,这实际上是一个很容易解决的问题,你只需要确保/opt/rh/php55/root/usr/bin//usr/bin之前出现在$PATH中。

您可以在~/.bashrc~/.bash_profile中这样做:

export PATH=/opt/rh/php55/root/usr/bin:$PATH

把它放在最后,注销再登录。您也可以直接在命令行中弹出该选项,但它只适用于当前会话,因此~/.bashrc~/.bash_profile选项更好。

如果您想从7.4.22升级到PHP 8.1.6,请进入命令行界面并键入以下命令

echo 8.1.6>.php-version

它将创建一个包含版本号(8.1.6)的.php-version文件

然后尝试运行

symfony当地:php:刷新

就是这个

安装PHP 7.4.16后,试图启动服务器:

symfony server:start

我得到以下错误:

exec: "/usr/local/bin/php": stat /usr/local/bin/php: no such file or directory
跑后

symfony local:php:list

发现:

┌─────────┬────────────┬────────────┬─────────┬─────────┬─────────┬─────────┐
│ Version │ Directory  │  PHP CLI   │ PHP FPM │ PHP CGI │ Server  │ System? │
├─────────┼────────────┼────────────┼─────────┼─────────┼─────────┼─────────┤
│ 7.4.14  │ /usr/local │ bin/php    │         │         │ PHP CLI │ *       │
│ 7.4.16  │ /usr       │ bin/php7.4 │         │         │ PHP CLI │         │
└─────────┴────────────┴────────────┴─────────┴─────────┴─────────┴─────────┘

原来我有一些以前安装的PHP 7.4.14的剩余文件,Symfony仍然试图使用那个版本,它已经被删除了。在/usr/local/bin删除php-config, phpize and phpdbg文件后,我可以运行我的服务器没有问题。

转到您的项目创建一个包含版本号(8.1.0)的.php-version文件