Apache httpd 无法在 CentOS 7 上解析 php

Apache httpd 无法在 CentOS 7 上解析 php

我正在设置一个新的 CentOS 7 服务器,

我成功安装了 apache httpd 并获得了 html 欢迎页面,然后我安装了 php 5.4,然后尝试使用测试页对其进行测试:

<?php
phpinfo();
?>

将其放在 /var/www/html 中,但我得到了一个空白页。阿帕奇错误日志说:

[Mon Jan 26 21:20:12.474636 2015] [:error] [pid 8352] [client ::1:60206] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/test.php' (include_path='.:/php/includes') in Unknown on line 0

我尝试的是:

我补充道/etc/httpd/conf/httpd.conf

LoadModule php5_module "/usr/lib64/php"
AddType application/x-httpd-php  .php

并发现:DirectoryIndex index.html然后添加index.php

我也未曾include_path='.:/php/includes'承诺/etc/php.ini

然后重新启动阿帕奇。没有改变!任何想法?

更新

当我检查时:apachectl configtest我得到:

[Mon Jan 26 22:22:49.748764 2015] [so:warn] [pid 4984] AH01574: module php5_module is already loaded, skipping
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK

所以我列出了我的主机:

[admin@localhost etc]$ cat hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

ServerName www.example.com:80然后在 httpd.conf 中替换为ServerName localhost4.localdomain4并且也尝试过ServerName localhost:80

但问题仍然存在。然而apachectl configtest结果变成了:

[Mon Jan 26 22:49:46.968433 2015] [so:warn] [pid 5841] AH01574: module php5_module is already loaded, skipping
Syntax OK

和错误日志:

[Mon Jan 26 22:58:27.110725 2015] [:error] [pid 6103] [client ::1:47747] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/test.php' (include_path='.:/php/includes') in Unknown on line 0

解决方案

我最终决定卸载 php54 然后使用以下命令重新安装 php:

yum install php php-pear

ServerName然后在conf中更改为localhost:80并且它起作用了!

感谢大家抽出宝贵的时间

答案1

我有一个稍微不同的httpd.conf启用 PHP 的条目:

LoadModule php5_module /etc/httpd/modules/libphp5.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

我的观察是,您上面发布的“LoadModule”指令没有指定要加载的 .so 文件。尝试查找特定的 .so 文件,而不仅仅是它所在的目录,或者不带“.so”后缀的文件名。

apachectl configtest当你运行它时会说什么?

答案2

LoadModule需要指向一个共享对象而不是任何东西/usr/lib64/php。例如:

LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php

加载其他内容作为 php5_module 可能会阻止实际模块加载(从“已加载”错误消息判断)。

答案3

为了centos 6.7 x86-x64, 这

LoadModule php5_module /etc/httpd/modules/libphp5.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

解决了我的问题<?php phpinfo(); ?>

相关内容