今天吧網站放到nginx下centos環境,程式是thinkphp3.2的,首頁能正常顯示,內鏈所有都是500錯誤,貼出配置代碼和錯誤記錄檔,求解決方案!!
server { listen 80; server_name 此處網站網域名稱; root /usr/local/www/web/go; location / { root /usr/local/www/web/go; index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last; break; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .php$ { root /usr/local/www/web/go; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #定義變數 $path_info ,用於存放pathinfo資訊 set $path_info ""; #定義變數 $real_script_name,用於存放真真實位址 set $real_script_name $fastcgi_script_name; #如果地址與引號內的Regex匹配 if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { #將檔案地址賦值給變數 $real_script_name set $real_script_name $1; #將檔案地址後的參數賦值給變數 $path_info set $path_info $2; } #配置fastcgi的一些參數 fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; #fastcgi_param SCRIPT_FILENAME /usr/local/www/web/go$fastcgi_script_name; include fastcgi_params; } } }
nginx日誌:
[root@VM_161_64_centos nginx]# 29068#0: *41 rewrite or internal redirection cycle while processing "/index.php//index.php//index.php//index.php//index.php//index.php//index.php//index.php//index.php//index.php//index.php//index.php/home/user/register.html", client: 這裡IP, server: 這裡網域名稱, request: "GET /index.php/home:Q
回複討論(解決方案)
codeigniter在nginx下配置
應該也適用 thinkphp,你對比一下
server { listen 80; server_name www.phpno.com; root /home/www/www_phpno_com/admin_wwwroot; access_log off; error_page 404 /404.html; location /404.html { root /home/www/www_phpno_com/admin_wwwroot; } location /{ index index.html index.htm index.php; if (-e $request_filename) { break; } if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; } } location ~ .+\.php($|/) { root /home/www/www_phpno_com/admin_wwwroot; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /home/www/www_phpno_com/admin_wwwroot/$fastcgi_script_name; # fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } }
codeigniter在nginx下配置
應該也適用 thinkphp,你對比一下
[code=text]server {
listen 80;
server_name 網域名稱;
root /usr/local/www/web/go;
location / {
index index.php index.html index.htm;
if (-e $request_filename) {
break;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ .php$ {
root /usr/local/www/web/go;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
#配置fastcgi的一些參數
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
}
改成這樣了,還是500呢,需要改哪裡呀?
1# 正解啊
你的問題就是偽靜態問題,改正確了,就OK了
看一下伺服器錯誤日誌
1、確認不是 nginx 照成的。可用一個簡單的程式測試一下
2、開啟 php 的錯誤顯示功能,看看是否有錯誤資訊輸出
3、據說較高版本的 preg_replace_callback 存在嚴重記憶體泄露問題,而 thinkphp3.2 恰恰要用到
1、確認不是 nginx 照成的。可用一個簡單的程式測試一下
2、開啟 php 的錯誤顯示功能,看看是否有錯誤資訊輸出
3、據說較高版本的 preg_replace_callback 存在嚴重記憶體泄露問題,而 thinkphp3.2 恰恰要用到
我首頁能顯示啊,首頁是php程式啊,開啟了右小角的那個調試,點擊內鏈,就不見了。就是500
1# 正解啊
你的問題就是偽靜態問題,改正確了,就OK了
重點是哪裡,我改不對啊?
清空 Runtime 目錄再試
出現 500 錯誤就表示你的程式有問題(當然也可能是其他方面的問題,但首先檢查的是你的程式)
你不肯開啟錯誤顯示功能,那如何能知道問題出在哪裡?
就算是算命,不也要你的生辰八字嗎?
#rewrite ^(.*)$ /index.php/$1 last;
rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
歸神 我改了這行 現在500 變成404了 = =
清空 Runtime 目錄再試
出現 500 錯誤就表示你的程式有問題(當然也可能是其他方面的問題,但首先檢查的是你的程式)
你不肯開啟錯誤顯示功能,那如何能知道問題出在哪裡?
就算是算命,不也要你的生辰八字嗎?
等我找找PHP 裝哪裡了 = =
phpinfo()
不就看到 php.ini 在哪裡了嗎
phpinfo()
不就看到 php.ini 在哪裡了嗎
error_reporting = E_ERROR
display_errors = On
開了這2個然後service nginx restart
還是輸出404啊,沒有輸出錯誤,我要去看日誌?還是重啟PHP?
phpinfo()
不就看到 php.ini 在哪裡了嗎
[23-Jul-2014 08:33:51] PHP Notice: Undefined index: SCRIPT_NAME in /usr/local/www/erp/ThinkPHP/ThinkPHP.php on line 82
[23-Jul-2014 09:06:15] PHP Notice: Undefined index: SCRIPT_NAME in /usr/local/www/erp/ThinkPHP/ThinkPHP.php on line 82
[23-Jul-2014 10:05:53] PHP Notice: Undefined index: SCRIPT_NAME in /usr/local/www/erp/ThinkPHP/ThinkPHP.php on line 82
[23-Jul-2014 10:09:42] PHP Notice: Undefined index: SCRIPT_NAME in /usr/local/www/erp/ThinkPHP/ThinkPHP.php on line 82
[23-Jul-2014 10:22:08] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /usr/local/www/web/dolanne/go/info.php on line 2
[23-Jul-2014 10:28:04] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /usr/local/www/web/dolanne/go/info.php on line 2
PHP Notice: Undefined index: SCRIPT_NAME in /usr/local/www/erp/ThinkPHP/ThinkPHP.php on line 82
$_SERVER['SCRIPT_NAME'] 不存在,不知道他們是怎麼測試的!
在 入口檔案開始處
$_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF'];
PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /usr/local/www/web/dolanne/go/info.php on line 2
你沒有設定時區,按他的提示設定一下就好了
500 變成 404
不是進步而是退步!
404 是找不到目標頁,顯然是你重寫指錯了地方
500 是被執行的程式出現了問題,而又未能返回錯誤資訊。於是 nginx 就發 500錯,表示應用程式拒絕響應
500 變成 404
不是進步而是退步!
404 是找不到目標頁,顯然是你重寫指錯了地方
500 是被執行的程式出現了問題,而又未能返回錯誤資訊。於是 nginx 就發 500錯,表示應用程式拒絕響應
好吧 弄成500,再看下日誌
500 變成 404
不是進步而是退步!
404 是找不到目標頁,顯然是你重寫指錯了地方
500 是被執行的程式出現了問題,而又未能返回錯誤資訊。於是 nginx 就發 500錯,表示應用程式拒絕響應
現在回到發帖的時候狀態了 php日誌還是上面那些,nignx日誌就是發帖0樓的那些,腫麼辦
500 變成 404
不是進步而是退步!
404 是找不到目標頁,顯然是你重寫指錯了地方
500 是被執行的程式出現了問題,而又未能返回錯誤資訊。於是 nginx 就發 500錯,表示應用程式拒絕響應
哈哈哈哈 我自己搞定了、、、