获取Apache的空白PHP页面

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页面,浏览器会显示空白页面(白页).

以下是我到目前为止所做的排除故障的方法:

  1. 创建了包含以下内容的页面:<?php phpinfo(); ?>.从浏览器查看时显示空白页面.
  2. 只是为了确保,apache指向正确的目录,在.html那里放置一个静态页面,并且在浏览器中看到它很好,所以apache正在工作,目录是正确的.
  3. /etc/php.ini,改变display_errors指令On.还是空白页面
  4. 在Apache配置文件(/etc/httpd/conf/httpd.conf)中找到了这一行Include conf.d/*.conf.在conf.d目录中,有一个php.conf包含以下行的文件: LoadModule php5_module modules/libphp5.so.确保此.so文件实际存在于此处.
  5. 在同一个文件中我也有这两行:AddHandler php5-script .phpAddType text/html .php
  6. 从CLI执行php页面,它工作正常 - 所以php在本地工作.

那为什么它总是在浏览器上显示空白/白页?我还缺少什么?

编辑 根据@Nathan的建议,

  1. 我检查了Apache错误日志文件,看不到任何报告错误.
  2. /etc/php.ini说,php error_log位于syslog.所以我检查/var/log/messages但找不到任何PHP错误消息
  3. 接下来我HTML在包含phpinfo()调用的php文件中放了一些正常.有趣的是,我发现即使是普通的HTML文本也不会出现.它仍然产生空白页面.
  4. 然后我检查了Apache access日志.惊喜!GET我试图在浏览器中加载任何PHP文件都没有请求.但GET请求所有非PHP文件都有200返回代码.

Apache 甚至没有记录任何PHP文件的访问请求.知道为什么会这样吗?

小智 18

看看你的phpinfo()脚本.

<?php
phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

错过了第一个"?"背后的"php" 会给出一个空白页面


DeS*_*Ond 5

我认为你的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)


has*_*own 1

已经有一段时间了,但我想回到这个问题来更新问题与目录权限设置有关。

我使用的 FPM 用户没有必要的权限来执行index.phpWeb 根目录中的文件。

为了避免将来出现这些问题,我创建了一个自动 bash 脚本,它将自动在 DigitalOcean 框中创建和配置网络服务器。请看这里https://github.com/akash-mitra/fairy

该脚本会自动,

  • 安装 Nginx
  • 为 nginx 创建虚拟服务器块
  • 安装 PHP、PHP APC、PHP Curl 等。
  • 支持 PHP 快速进程管理器 (php-fpm)
  • 安装 Memcached
  • 安装数据库(MariaDB / MySQL)
  • 可选择安装 PHP Composer 和 Laravel
  • 配置和加强 SSH
  • 激活防火墙
  • 可以选择在 DO 服务器中启用交换空间并修复区域设置问题