has*_*own 13 php apache centos
在新设置的digitalOcean云服务器(CentOS)中,我安装了php和Apache.网络服务器正常运行:
[root@a2m5cent01 httpd]# service httpd status
httpd (pid 11232) is running...
[root@a2m5cent01 httpd]# php --version | head -1
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试访问任何php页面,浏览器会显示空白页面(白页).
以下是我到目前为止所做的排除故障的方法:
<?php phpinfo(); ?>.从浏览器查看时显示空白页面..html那里放置一个静态页面,并且在浏览器中看到它很好,所以apache正在工作,目录是正确的./etc/php.ini,改变display_errors指令On.还是空白页面/etc/httpd/conf/httpd.conf)中找到了这一行Include conf.d/*.conf.在conf.d目录中,有一个php.conf包含以下行的文件:
LoadModule php5_module modules/libphp5.so.确保此.so文件实际存在于此处.AddHandler php5-script .php和AddType text/html .php那为什么它总是在浏览器上显示空白/白页?我还缺少什么?
编辑 根据@Nathan的建议,
/etc/php.ini说,php error_log位于syslog.所以我检查/var/log/messages但找不到任何PHP错误消息HTML在包含phpinfo()调用的php文件中放了一些正常.有趣的是,我发现即使是普通的HTML文本也不会出现.它仍然产生空白页面.access日志.惊喜!GET我试图在浏览器中加载任何PHP文件都没有请求.但GET请求所有非PHP文件都有200返回代码.Apache 甚至没有记录任何PHP文件的访问请求.知道为什么会这样吗?
小智 18
看看你的phpinfo()脚本.
<?php
phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)
错过了第一个"?"背后的"php" 会给出一个空白页面
我认为你的apache安装错误.这就是为什么你在网络服务器上看不到任何php页面的原因.清除删除所有现有的应用程序,如httpd,php,php-fpm,php-cli等,并尝试按此顺序清理isntall
yum install httpd -y
yum install php php-common php-cli php-gd php-curl php-fpm -y
Run Code Online (Sandbox Code Playgroud)
然后确保你重新启动你的httpd服务器.
service httpd restart
Run Code Online (Sandbox Code Playgroud)
安装mod_fastcgi:
yum install mod_fastcgi
Run Code Online (Sandbox Code Playgroud)
启动服务:
service php-fpm start
Run Code Online (Sandbox Code Playgroud)
重启Apache:
service httpd restart
Run Code Online (Sandbox Code Playgroud)
5.使用PHP-FPM配置Apache
打开fastcgi.conf文件:
nano /etc/httpd/conf.d/fastcgi.conf
Run Code Online (Sandbox Code Playgroud)
将其添加到文件末尾:
<IfModule mod_fastcgi.c>
DirectoryIndex index.html index.shtml index.cgi index.php
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
</IfModule>
Run Code Online (Sandbox Code Playgroud)
在"FastCgiWrapper"之后进行搜索并确保将其设置为"off"然后保存文件.
/ usr/lib/cgi-bin /目录必须存在,因此我们创建它:
mkdir /usr/lib/cgi-bin/
Run Code Online (Sandbox Code Playgroud)
如果安装并启用了mod_php,我们需要将其禁用,以便在/etc/httpd/conf.d/php.conf中打开配置:
nano /etc/httpd/conf.d/php.conf
Run Code Online (Sandbox Code Playgroud)
注释掉AddHandler和AddType行,使其如下所示:
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
#AddHandler php5-script .php
#AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
Run Code Online (Sandbox Code Playgroud)
保存文件并重启Apache:
service httpd restart
Run Code Online (Sandbox Code Playgroud)
已经有一段时间了,但我想回到这个问题来更新问题与目录权限设置有关。
我使用的 FPM 用户没有必要的权限来执行index.phpWeb 根目录中的文件。
为了避免将来出现这些问题,我创建了一个自动 bash 脚本,它将自动在 DigitalOcean 框中创建和配置网络服务器。请看这里https://github.com/akash-mitra/fairy
该脚本会自动,
| 归档时间: |
|
| 查看次数: |
74711 次 |
| 最近记录: |