Home > Article > Backend Development > nginx环境thinkphp,500错误
今天吧网站放到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; #如果地址与引号内的正则表达式匹配 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; } } }
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;
}
}
}
1# 正解啊
你的问题就是伪静态问题,改正确了,就OK了
看一下服务器错误日志
1、确认不是 nginx 照成的。可用一个简单的程序测试一下
2、打开 php 的错误显示功能,看看是否有错误信息输出
3、据说较高版本的 preg_replace_callback 存在严重内存泄露问题,而 thinkphp3.2 恰恰要用到
1、确认不是 nginx 照成的。可用一个简单的程序测试一下
2、打开 php 的错误显示功能,看看是否有错误信息输出
3、据说较高版本的 preg_replace_callback 存在严重内存泄露问题,而 thinkphp3.2 恰恰要用到
1# 正解啊
你的问题就是伪静态问题,改正确了,就OK了
清空 Runtime 目录再试
出现 500 错误就表示你的程序有问题(当然也可能是其他方面的问题,但首先检查的是你的程序)
你不肯打开错误显示功能,那如何能知道问题出在哪里?
就算是算命,不也要你的生辰八字吗?
#rewrite ^(.*)$ /index.php/$1 last;
rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
归神 我改了这行 现在500 变成404了 = =
清空 Runtime 目录再试
出现 500 错误就表示你的程序有问题(当然也可能是其他方面的问题,但首先检查的是你的程序)
你不肯打开错误显示功能,那如何能知道问题出在哪里?
就算是算命,不也要你的生辰八字吗?
phpinfo()
不就看到 php.ini 在哪里了吗
phpinfo()
不就看到 php.ini 在哪里了吗
phpinfo()
不就看到 php.ini 在哪里了吗
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 变成 404
不是进步而是退步!
404 是找不到目标页,显然是你重写指错了地方
500 是被执行的程序出现了问题,而又未能返回错误信息。于是 nginx 就发 500错,表示应用程序拒绝响应
500 变成 404
不是进步而是退步!
404 是找不到目标页,显然是你重写指错了地方
500 是被执行的程序出现了问题,而又未能返回错误信息。于是 nginx 就发 500错,表示应用程序拒绝响应