繁体   English   中英

从PHP返回Http状态代码到Apache?

[英]Returning Http Status Code to Apache from PHP?

在我的本地开发机器上,我下载了在Windows 7上运行的PDT + Zend Server,其中包括Apache 2.2.16和PHP 5.3.5。在我的本地站点上,我包含了一个包含404,403和500的ErrorDocuments的.htaccess在我的PHP中,当用户请求不存在的文档时,我使用头文件(“Http / 1.0 404 Not Found”)。 在我的本地服务器上,一切都很好。 我的自定义ErrorDocument出现了,我很高兴。

我将所有内容上传到我在Linux服务器上运行Apache 2.2.38和PHP 5.3.8的共享主机上,突然只有ErrorDocuments不是来自PHP,它才能正常工作。

PHP.ini或httpd.conf或.htaccess中是否有一些设置允许Apace从PHP中查看错误代码,这使我的dev服务器正常工作,但不是我的共享主机?

在研究这个问题时,我所看到的只是“Apache一旦传递给PHP就看不到状态代码”。 在这种情况下,为什么我的开发服务器工作正常?

编辑

为清楚起见,这是.htaccess:

# Use PHP 5.3
Action application/x-hg-php53 /cgi-sys/php53
AddHandler application/x-hg-php53 .php 

#Deny Include Files
<Files *.inc>
order deny,allow
deny from all
</files>

#Provide custom error documents
ErrorDocument 404 /Errors/Http404.php
ErrorDocument 403 /Errors/Http403.php
ErrorDocument 500 /Errors/Http500.php

.htaccess 有效,因为如果用户导航到myhost.com/jdkslfjdls,则用户会收到错误/ Http404.php的内容。

但是,如果用户导航到myhost.com/images/GetImage.php?Id=5(当没有图像#5时),则用户不会收到任何内容。

如果他们导航到(内部IP地址)/ images / GetImage.php?Id = 5,则用户会收到错误/ Http404.php的内容。

如果用户尝试访问GetImage.php?Id = 6(当存在图像#6但他们没有权限时)会出现类似的问题。 在共享服务器上,它们会出现空白页或浏览器403错误。 在我的开发服务器上,他们得到我的实际自定义403错误页面。

同样,如果我尝试访问.inc文件,403错误文档在共享服务器上工作。

您确定在服务器上使用了.htaccess文件吗? 有时托管公司不允许全局apache设置被本地.htaccess文件覆盖。

但是,如果您有权访问虚拟主机配置,则可能需要查看以下指令

AllowOverride All

相反,你找到了

AllowOverride None

尝试改变如上。

检查你是否有

AllowOverride ALL

在你的网站对应的VirtualHost内的Directory指令下的apache.conf中

无论如何,这可能是一个可能的原因,另一个可能是检查你是否启用了mod_rewrite

在基于ubuntu或debian的系统上,您只需将/etc/apache2/mods-available/mod_rewrite.load中的mod_rewrite.load链接或复制到/etc/apache2/mods-enabled/mod_rewrite.load

重写应该没有任何关系,但我已经看到你的.htaccess指令可能需要mod_rewrite的情况

所以在apache conf文件中检查那些东西。 如果没有任何反应,请联系我@ phpcip@gmail.com

希望它有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM