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;
}