我正试图将我的项目移动到使用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文件