我已经安装了CentOS 7.2,Apache 2.4.6并运行了php 5.4。 现在我想将我的PHP版本升级到7,因此我按照本文中描述的步骤进行操作:
How To Upgrade to PHP 7 on CentOS 7
curl 'https://setup.ius.io/' -o setup-ius.sh
sudo bash setup-ius.sh
sudo yum remove php-cli mod_php php-common
sudo yum install mod_php70u php70u-cli php70u-mysqlnd
sudo apachectl restart
它安装了php 7,我可以用它来执行php代码。 php -v
给了我:
PHP 7.0.9 (cli) (built: Aug 16 2016 10:01:52) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
当我通过apache访问带有<php phpinfo(); ?>
的php文件时,它会要求我下载该文件。
在我/etc/httpd/conf.modules.d
我有以下内容:
<IfModule prefork.c>
LoadModule php7_module modules/libphp7.so
</IfModule>
<IfModule !prefork.c>
LoadModule php7_module modules/libphp7-zts.so
</IfModule>
我在httpd.conf中的虚拟主机都有(并且在旧的php5.4情况下),它们是由我的Virtualmin设置自动创建的:
AddType application/x-httpd-php .php
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper /home/myvhost/fcgi-bin/php5.fcgi .php
FCGIWrapper /home/myvhost/fcgi-bin/php5.fcgi .php5
/home/myvhost/fcgi-bin/php5.fcgi
的内容如下:
#!/bin/bash
PHPRC=$PWD/../etc/php5
export PHPRC
umask 022
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=99999
export PHP_FCGI_MAX_REQUESTS
SCRIPT_FILENAME=$PATH_TRANSLATED
export SCRIPT_FILENAME
exec /bin/php-cgi
我不确定apache无法正确处理php代码的原因是什么。我希望你能给我一些关于如何解决/调查它的想法。如果需要,我很乐意提供有关设置的更多信息。
答案 0 :(得分:0)
您需要指定处理程序而不是媒体类型。例如:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
旁注:如今,除非你已经为线程安全编译了php,否则你应该寻求使用Apache 2.4与mpm_event和mod_proxy_fcgi + php-fpm而不是“Apache 2.4 with prefork + mod_php”。
答案 1 :(得分:0)
我希望您使用的是webmin(virtualmin),并且在安装php之后实际上已修改了一个文件,如果您选中/etc/httpd/conf.d/php.conf
,则可能会看到未输入的内容。
同时,您可能会看到php.conf.rpmnew
是较旧的版本,其中的行已被注释掉,因此只需将#
添加到该文件中的每一行或删除它,然后将旧文件php.conf.rpmnew
重命名为php.conf
之后不要忘记重启apache:
apachectl重新启动