我正在设置一个新的 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(); ?>