listen 监听
先是路径:
刚开始配置了nginx.conf,不是400就是500,最好的方法是根目录下随便写的打印东西的,就可以知道路径对不对。
然后就是重写的错误:
下面是复制的,这个解决问题的思路很好。
在入口文件index.php中加入
error_reporting(E_ALL);
ini_set('display_errors', '1');
来打印所有错误信息
代码打印出
Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/mz.kchangfu.cn/thinkphp/start.php) is not within the allowed path(s): (/home/wwwroot/mz.kchangfu.cn/public/:/tmp/:/proc/) in /home/wwwroot/mz.kchangfu.cn/public/index.php on line 22
Warning: require(/home/wwwroot/mz.kchangfu.cn/thinkphp/start.php): failed to open stream: Operation not permitted in /home/wwwroot/mz.kchangfu.cn/public/index.php on line 22
Fatal error: require(): Failed opening required '/home/wwwroot/mz.kchangfu.cn/public/../thinkphp/start.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/mz.kchangfu.cn/public/index.php on line 22
三、分析错误内容
查看问题描述以及资料,发现是php open_basedir 配置的问题,php不能引入其授权目录上级及其以上的文件,默认配置在php.ini(/usr/local/php/etc/php.ini),但是我的open_basedir 并没有配置,默认被注释了。
#在php.ini
open_basedir = //没有打开也是空的
#在.user.ini
open_basedir=/home/wwwroot/mz/public:/tmp/:/proc/
#在fastcgi.conf
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
只需把
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
改成
`fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/:/tmp/:/proc/";`
成功的案例a.conf
server {
listen 80; #端口号
server_name 47.94.227.248; #主机名
index index.php index.html index.htm;
root /home/wwwroot/default/yjh/website;
error_page 404 /404.html; # 错误页面
include enable-php-pathinfo.conf;
include rewrite/thinkphp.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 1d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
location /ngx_status {
stub_status on;
access_log off;
#allow 127.0.0.1;
#deny all;
}
error_log /usr/share/nginx/html/2018/1/qpl_8090error.log;
access_log /usr/share/nginx/html/2018/2/qpl_8090access.log;
}
配置完还有些tp的常量路径有写不能用,在入口文件重新定义就可以,陋见!!