首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让PHP在Apache环境中工作

问无法让PHP在Apache环境中工作
EN

Server Fault用户
提问于 2014-01-14 06:52:19
回答 2查看 9K关注 0票数 2

试图在新创建的VirtualHosting云服务器下的CentOS节点中使用DigitalOcean设置Apache环境。

问题是,虽然虚拟主机本身是有效的,但PHP却不起作用。

服务器设置:

  • :CentOS 6.5和Apache/2.2.15
  • PHP版本: 5.3.3 (用作Apache模块)

采取的

步骤:

以根用户身份登录,

  • 安装Apache和php:yum -y install httpd php
  • 创建新的虚拟主机配置文件,如下所示:

文件:/etc/httpd/conf.d/vhosts.conf

代码语言:javascript
复制
NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin admin@example.org
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>
  • 为虚拟主机站点创建新目录

就像下面,

代码语言:javascript
复制
mkdir -p /srv/www/example.org/public_html
mkdir -p /srv/www/example.org/logs
  • 放置.php和.html测试文件如下所示:

/srv/www/example.org/public_html/ (DocumentRoot)下的文件

代码语言:javascript
复制
echo "<HTML>It work's</HTML>"      > /srv/www/example.org/public_html/index.html
echo "<?php echo ("It works"); ?>" > /srv/www/example.org/public_html/index.php

接下来,当我将浏览器指向index.html时,它可以工作。但是当我将浏览器指向index.php时,我会得到一个空白页。

Troubleshooting

(我已经做过/检查过的事情没有任何运气)

  • 确保Apache正在运行并且DocumentRoot是可访问的。
  • 所有目录都是755和644文件。
  • 检查了Apache访问日志。html页请求有200个状态代码,但访问日志中没有.php页面请求。
  • Apache或PHP错误日志中没有错误,/var/log/messages中也没有错误
  • 尝试在vhost配置文件中添加php_admin_flag engine on

还请参阅下面的/etc/httpd/conf.d/php.conf内容

代码语言:javascript
复制
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php
EN

回答 2

Server Fault用户

发布于 2014-05-07 12:41:13

根据我的经验,当PHP遇到严重的底层错误时,它会呈现一个空白页面。它通常很容易修复,但不幸的是,Apache日志、PHP日志或syslog中通常没有记录任何内容,从而使故障排除过程变得困难。

使用以下方法查找php.ini配置文件:

代码语言:javascript
复制
php -i | grep "php.ini"

这应该会产生这样的结果:

代码语言:javascript
复制
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

用您喜欢的文本编辑器编辑这个配置文件(在本例中是/etc/php.ini),并确保打开了显示错误和启动错误。条目应该如下所示:

代码语言:javascript
复制
display_errors = On
display_startup_errors = On

最后,重新启动Apache,以便读取新的PHP配置,并通过curl或浏览器访问页面。这将产生一条有助于故障排除过程的错误消息。

票数 2
EN

Server Fault用户

发布于 2014-05-07 12:55:14

您应该做的第一件事是检查在Apache配置中设置的Apache错误日志;复制如下:

代码语言:javascript
复制
NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin admin@example.org
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>

PHP在Apache下运行,因此任何弹出的错误都会出现在服务器日志中。我建议登录到服务器&使用tail,如下所示:

代码语言:javascript
复制
tail -f -n 200 /srv/www/example.org/logs/error.log

但这是Apache给你的一般日志吗?还是DigitalOcean的配置?因为/srv/www/example.org/logs/的这条路看起来很奇怪。在标准Linux下,它将位于如下位置:

代码语言:javascript
复制
tail -f -n 200 /var/log/apache2/error.log

无论日志实际发送到何处,这都将是PHP和Apache在服务器上发生的事情的关键所在。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/567072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档