我想知道php
我使用的是哪个版本,所以我编写了标准脚本:
phpinfo();
Run Code Online (Sandbox Code Playgroud)
这给了我
PHP version 5.6.10
Run Code Online (Sandbox Code Playgroud)
我的应用程序所需的正确PHP 版本。当我在终端中尝试时:
php -i
Run Code Online (Sandbox Code Playgroud)
或者
php -v
Run Code Online (Sandbox Code Playgroud)
它告诉我:
PHP version 5.3.2
Run Code Online (Sandbox Code Playgroud)
我不需要的。然后我尝试:
which php
Run Code Online (Sandbox Code Playgroud)
它告诉我:
/usr/bin/php
Run Code Online (Sandbox Code Playgroud)
现在我很困惑我使用的是哪个版本的 PHP。这些文件已上传到托管网站,我无法对配置文件(如httpd.conf
或php.ini
.
Jan*_*ski 30
如果您在使用 Apache 在 Ubuntu 14.04 上从 PHP5 升级到 PHP7 时遇到此问题,这对我有帮助(功劳在这里):
在 Apache 上禁用 PHP5 模块:
sudo a2dismod php5
Run Code Online (Sandbox Code Playgroud)
现在启用 PHP7:
sudo a2enmod php7.1
Run Code Online (Sandbox Code Playgroud)
要反映更改,需要重启 Apache:
sudo systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)
Gia*_*968 29
不要惊慌!如果您担心您的 Apache 服务器使用的phpinfo()
是哪个 PHP 版本,那么输出总是您应该注意的。Apache PHP 模块和 PHP 命令行二进制文件是两种不同的东西,不会相互干扰。
事实上,只要您调整 Apache 以正确加载它,您就可以编译和加载您想要与 Apache 一起使用的各种 PHP 版本。在 Apache 解析 PHP 页面的情况下,PHP 命令行界面永远不会发挥作用。
PHP 的命令行版本仅用于命令行特定任务,Apache 的 PHP 模块永远不会触及、使用或需要它。
你这样说:
我想知道
php
我使用的是哪个版本,所以我编写了标准脚本:Run Code Online (Sandbox Code Playgroud)phpinfo();
这给了我 PHP 版本 5.6.10 -我的应用程序所需的正确PHP 版本。当我在终端中尝试时:
Run Code Online (Sandbox Code Playgroud)php -i or php -v
它显示了我不需要的 PHP 版本 5.3.2。
命令行中可用的 PHP 版本与作为模块加载的 PHP 版本 100% 无关。这些是完全独立的事情。
因此,如果您担心您的 Web 应用程序正在使用哪个版本的 PHP,如果phpinfo()
显示版本 5.6.10,并且这就是您想要/需要的,那么 100% 很好。
PHP 的命令行版本是一个完全独立的系统项。因此,唯一重要的是phpinfo()
.
如果出于某种原因您想在 Apache 中使用不同版本的 PHP,您需要做的就是在某处安装已编译的 Apache PHP 模块,然后在系统的 Apache 配置中添加或调整这一行:
LoadModule php5_module /path/to/php/and/the/module/for/apache2/libphp5.so
Run Code Online (Sandbox Code Playgroud)
只需将路径调整到libphp5.so
Apache 用来解析 PHP的路径,然后重新启动 Apache,您就可以开始工作了。
例如,有一次我不得不从源代码(带有 GD 库支持)编译 PHP 版本 5.1.6,以便在运行 PHP 5.3.5 的 Ubuntu 12.04 机器上使用。在服务器的 PHP 模块加载文件中:
/etc/apache2/mods-available/php5.load
Run Code Online (Sandbox Code Playgroud)
我有这样的行:
# LoadModule php5_module /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module /usr/lib/apache2/modules/libphp516-gd.so
Run Code Online (Sandbox Code Playgroud)
注一行是如何注释掉了libphp535.so
,另一个为libphp516-gd.so
被注释掉?我所做的是将默认的 PHP 5.3.5 libphp5.so
Apache 模块重命名为libphp535.so
名称中的版本号,以便我可以将它放在那里以供参考,然后命名 PHP 5.1.6(支持 GD 库)模块,libphp516-gd.so
这样我就知道是什么了也是。这样我就可以在系统上并排使用它们。
而且——就像我一开始所说的那样——命令行中使用的 PHP 版本与 Apache PHP 模块完全没有关系。因此,您可以在系统上准备好任意数量的不同版本的 Apache PHP 模块;只需调整配置并重新启动 Apache,您就可以正常使用您指定的 Apache 应使用的任何 PHP 版本。
归档时间: |
|
查看次数: |
90964 次 |
最近记录: |