细节:
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
Bitnami used in AWS
我想安装 PHP 5.5,因此我执行下一步:
php -v
PHP 5.4.26 (cli) (built: Apr 8 2014 10:05:18)
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5
Reading package lists... Done
Building dependency tree
Reading state information... Done
php5 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
当我使用命令时:
sudo apt-cache policy php5
我得到下一个:
php5:
Installed: 5.5.29+dfsg-1+deb.sury.org~precise+3
Candidate: 5.5.29+dfsg-1+deb.sury.org~precise+3
Version table:
*** 5.5.29+dfsg-1+deb.sury.org~precise+3 0
500 http://ppa.launchpad.net/ondrej/php5/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
5.3.10-1ubuntu3.19 0
500 http://eu-west-1.ec2.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
5.3.10-1ubuntu3 0
500 http://eu-west-1.ec2.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
我通过以下方式检查文件:
locate bin/php
/opt/bitnami/php/bin/php
/opt/bitnami/php/bin/php-cgi
/opt/bitnami/php/bin/php-cgi.bin
/opt/bitnami/php/bin/php-config
/opt/bitnami/php/bin/php.bin
/opt/bitnami/php/bin/phpize
/opt/bitnami/php/sbin/php-fpm
/usr/bin/php
/usr/bin/php-cgi
/usr/bin/php-config
/usr/bin/php-config5
/usr/bin/php5
/usr/bin/php5-cgi
/usr/bin/phpize
/usr/bin/phpize5
/usr/lib/cgi-bin/php
/usr/lib/cgi-bin/php5
/usr/sbin/php5-fpm
/usr/sbin/php5dismod
/usr/sbin/php5enmod
/usr/sbin/php5query
which php
/opt/bitnami/php/bin/php
我还找到了/home/bitnami/.bashrc
看到下一个 PATH 的文件:
PATH="/opt/bitnami/varnish/bin:/opt/bitnami/sqlite/bin:/opt/bitnami/php/bin:/op$
export PATH
因此,如果我使用命令,/usr/bin/php -v
我将获得我的最新版本 PHP 5.5:
PHP 5.5.29-1+deb.sury.org~precise+3 (cli) (built: Sep 8 2015 12:58:11)
但如果我在我的网站中使用php -v
或phpinfo
总是获取旧版本 PHP 5.4:
PHP 5.4.26 (cli) (built: Apr 8 2014 10:05:18)
我如何将 PHP 版本切换为 5.5?我需要做什么?我需要在设置中写入什么才能启用 PHP 5?或者需要在 Apache 设置中进行哪些更改?
答案1
简短的回答。
不要惊慌!如果您担心 Apache 服务器使用的 PHP 版本,则输出phpinfo()
—通过 Apache Web 服务器 — 始终是您应该关注的。Apache PHP 模块和 PHP 命令行二进制文件是两件不同的事情互相不干扰。
事实上,只要你调整 Apache 使其正确加载,你就可以编译和加载你想要与 Apache 一起工作的各种 PHP 版本。当 Apache 解析 PHP 页面时,PHP 命令行界面永远不会发挥作用。
较长的答案。
您这样说:
但如果我在我的网站中使用
php -v
或phpinfo
总是获取旧版本 PHP 5.4:PHP 5.4.26 (cli) (built: Apr 8 2014 10:05:18)
命令行中可用的 PHP 版本与作为模块加载的 PHP 版本完全无关。它们是完全独立的东西。
因此,如果您担心您的 Web 应用程序正在使用哪个版本的 PHP,如果phpinfo()
显示版本 PHP 5.5.29,那么这就是您想要/需要的,100% 没问题。
PHP 的命令行版本是一个完全独立的系统项。因此,唯一重要的是 的输出phpinfo()
。
如果您尚未使用来检查 Apache 使用的 PHP 版本phpinfo()
,这很容易。在服务器的 Web 根目录中,只需创建一个名为的文件,phpinfo.php
如下所示;nano
在此示例中使用:
nano phpinfo.php
现在只需将其添加到该文件并保存:
<?php
phpinfo();
?>
phpinfo.php
然后通过 Web 浏览器 URL加载,如下所示:
http://hostname/phpinfo.php
然后检查返回的输出。应该会显示大量的配置详细信息,但您要检查的主要内容是标头,它应该显示类似“PHP 版本 5.4.26”或“PHP 版本 5.5.29”的内容。那是您要关注的版本号。
如果由于某种原因您想要在 Apache 中使用不同于所显示的 PHP 版本,您需要做的就是libphp5.so
在某处安装已编译的 Apache PHP 模块()并在系统的 Apache 配置中添加或调整此行:
LoadModule php5_module /path/to/php/and/the/module/for/apache2/libphp5.so
只需将路径调整为libphp5.so
— Apache 用来解析 PHP 的路径 — 然后重新启动 Apache 就可以了。
例如,有一次我必须从源代码编译 PHP 版本 5.1.6(支持 GD 库),以便在运行 PHP 5.3.5 的 Ubuntu 12.04 机器上使用。在服务器的 PHP 模块加载文件中:
sudo nano /etc/apache2/mods-available/php5.load
我有这样的台词:
# LoadModule php5_module /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module /usr/lib/apache2/modules/libphp516-gd.so
注意其中一行被注释掉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 版本。
查找新的 PHP 5.5libphp5.so
文件。
如果您不确定新的 PHP 5.5libphp5.so
文件在哪里,请执行以下操作。首先,locate
如果尚未安装,请在您的系统上安装:
sudo apt-get install locate
安装后,强制locate
更新其数据库,如下所示:
sudo updatedb
等待locate
重建文件系统数据库;它基本上就像 Mac OS X 中的 Spotlight,但适用于 Linux。完成后,进行如下locate
搜索:libphp5.so
locate libphp5.so
您的设置中应该会返回几行内容:
/usr/lib/apache2/modules/libphp5.so
/path/to/the/php5.5/location/of/libphp5.so
第一个路径是默认的 PHP 5.4 libphp5.so
,但另一个路径应该是 PHP 5.5 libphp5.so
Apache 模块的路径。知道该路径后,请php5.load
像这样打开文件:
sudo nano /etc/apache2/mods-available/php5.load
将其中的路径调整为 PHP 5.5 Apache 模块的路径libphp5.so
。然后像这样重新启动 Apache:
sudo service apache2 restart
然后通过 Web 浏览器再次检查该phpinfo.php
URL,如下所示:
http://hostname/phpinfo.php