1. php获取客户端状态码返回200或404
今天做了个程序,需要取得HTTP状态码,于是继续搜索无力,果然中文资源非常少,于是去查了PHP的手册。
找到了curl这个小工具。
使用curl需要在php.ini中设置启用才行 >< Windows的服务器中,打开php.ini,找到:
extension=php_curl.dll
去掉前面的注释既可 。
实现代码如下:
$curl = curl_init();
$url=’http://www.smdcn.net’;
curl_setopt($curl, CURLOPT_URL, $url); //设置URL
curl_setopt($curl, CURLOPT_HEADER, 1); //获取Header
curl_setopt($curl,CURLOPT_NOBODY,true); //Body就不要了吧,我们只是需要Head
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //数据存到成字符串吧,别给我直接输出到屏幕了
$data = curl_exec($curl); //开始执行啦~
echo curl_getinfo($curl,CURLINFO_HTTP_CODE); //我知道HTTPSTAT码哦~
curl_close($curl); //用完记得关掉他
完成~~
2. Http协议状态码理解(1**~5**)
通俗的来说,nginx作为一个代理服务器,将请求转发到其他服务器或者php-cgi来处理,当nginx收到了无法理解的响应时,就返回502。当nginx超过自己配置的超时时间还没有收到请求时,就返回504错误。
php-fpm没有启动
我们关闭php-fpm。
刷新页面,发现返回502错误:
nginx的error_log:
php-fpm请求超时
我们首先将php-fpm.conf中的 max_terminate_request 改成5s:
在php脚本中添加如下语句:
刷新页面,发现返回502错误:
查看php-fpm的error_log,有如下日志:
查看nginx的error_log,有如下日志:
504即nginx超过了自己设置的超时时间,不等待php-fpm的返回结果,直接给客户端返回504错误。但是此时php-fpm依然还在处理请求(在没有超出自己的超时时间的情况下)。
这里有三个相关的配置:
这里我们将fastcgi_read_timeout设置为1s,后端还是延迟20s,观测效果:
nginx返回504错误。
3. PHP动态页面如何让页面返回404状态码
header("HTTP/1.0 404 Not Found");
这个我刚试了下是可以的,应该是你这句话不是在页面的顶部,而是中间,顶部默认就输出一个200了。
4. php 301返回302状态吗
http状态码 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
http状态码 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
5. PHP写的页面无法访问,报HTTP500错误,这个是怎么回事
原因百分之80来自于网站根目录的config.php文件中资料库相关设定错误,这种错误排除,只要检查一下config.php文件中的服务器和资料库名称、使用者名称、密码,还有资料库前缀字串,再来就是档案文件路径,只要是多一个或少一个符号、大小写错误、空格…绝对会赏你一个[HTTP 500 内部服务器发生错误]的排头吃。
再来百分之10的错误来自于网站程式码设计错误也会出现[HTTP 500 内部服务器发生错误]的页面,这个错误一来可以从视窗工具=>网际网路选项=>进阶=>去掉勾选:显示易懂的HTTP错误讯息,二来可以从网站根目录的error_log纪录中看出一些端倪,再来排除,还有百分之5刚好碰上访问的网站在维护,最多的例子是网站升级和网站迁移。
将错误讯息显示出来。
而显示的方法有两种,一种是设定php.ini;另一种是透过程式码开启,操作方法请参考以下:
一、设定php.ini
1.首先开启php.ini档
2.使用“Ctrl”+“F”搜寻【display_errors】
3.将“display_errors=Off”改为“display_errors=On”
4.重新启动Apache
5.重启开启网页
二、透过程式码开启
1.开启显示“服务器错误(500)”的程式档
2.于程式档加入以下程式码
ini_set("display_errors", "On"); // 设定是否显示错误( On=显示, Off=隐藏 )
3.重启开启网页
6. 大神们 thinkphp怎么设置404页面 谢谢
在ACTION中新建一个文件EmptyAction.class.php,文件中的代码如下:
<?php
classEmptyActionextendsAction{
function_empty(){
header("HTTP/1.0404NotFound");//使HTTP返回404状态码
$this->display("Public:404");
}
}
?>
在apache中设置
在你的网站配置中加入ErrorDocument404/404.html即可。
在iis中设置
IIS/ASP.net下设置404错误页面
打开apachehttpd.conf配置文件或者新建.htaccess配置文件
首先,修改应用程序根目录的设置,打开“web.config”文件编辑,在其中加入如下内容:
<configuration>
<system.web>
<customErrorsmode=”On”defaultRedirect=”error.asp”>
<errorstatusCode=”404″redirect=”notfound.asp”/>
</customErrors>
</system.web>
</configuration>
注:上文例中“error.asp”为系统默认的404页面,“notfound.asp”为自定义的404页面,使用时请修改相应文件名。
然后,在自定义的404页面“notfound.asp”中加入:
<%
Response.Status=“404NotFound”
%>
php404
if(如果没有任何结果)
{
//以前是仅仅显示“该帖子已经不存在”的提示,现在是:
require(’/404.php’);
@header(’HTTP/1.1404NotFound’);
@header(’Status:404NotFound’);
exit;
}