作者:白珍茜登陆_585 | 来源:互联网 | 2023-07-22 11:52
当你将默认的访问路径改后(nginx.conf中的root之后的路径),同时应该将homewwwrootdefault.user.ini中的路径也改了!.user.ini是隐藏文件,
当你将默认的访问路径改后(nginx.conf中的root 之后的路径),同时应该将/home/wwwroot/default/.user.ini 中的路径也改了!
.user.ini 是隐藏文件,需要 ls -a 查看;
第一步:你先确定你的pathinfo路由开启了,配置如下:
lnmp v1.1上,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/vhost/域名.conf)
去掉#include pathinfo.conf前面的#,把try_files $uri =404; 前面加上# 注释掉。
1.2,1.3上,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/nginx.conf)
将include enable-php.conf;替换为include enable-php-pathinfo.conf;
修改pathinfo需要重启nginx生效。
第二步:路由重写设置成功
1 server {
2 listen 80;
3 server_name www.aaa.com;
4 root "你的项目路径";
5 include enable-php-pathinfo.conf;//开启pathinfo
6 location /nginx_status
7 {
8 stub_status on;
9 access_log off;
10 }
11 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
12 {
13 expires 30d;
14 }
15 location ~ .*\.(js|css)?$
16 {
17 expires 12h;
18 }
19 location ~ /.well-known {
20 allow all;
21 }
22 location ~ /\.
23 {
24 deny all;
25 }
26 location ~ /index.php {
27 fastcgi_pass 127.0.0.1:9000;
28 fastcgi_index index.php;
29 fastcgi_param SCRIPT_FILENAME $document_root/index.php;
30 include fastcgi_params;
31 fastcgi_param APPLICATION_ENV dev;
32 }
33 location / {
34 index index.html index.htm index.php l.php;
35 autoindex on;
36 if (!-e $request_filename){
37 rewrite ^/(.*) /index.php last;
38 }
39 }
40 error_page 500 502 503 504 /50x.html;
41 location = /50x.html {
42 root html;
43 }
44 location ~ \.php(.*)$ {
45 fastcgi_pass 127.0.0.1:9000;
46 fastcgi_index index.php;
47 fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
48 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
49 fastcgi_param PATH_INFO $fastcgi_path_info;
50 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
51 include fastcgi_params;
52 }
53 }
第三步:再次访问,如果是500/空白页面
在你框架index.php开头,打开报错,如下:
error_reporting(E_ALL);
ini_set('display_errors', '1');
默认是没有开启报错的,设置如下:
1、先打开php的错误提示
将 php.ini中的 display_errors = Off 修改为 On;
2、开启nginx的报错
在 /usr/local/php/etc/php-fpm.conf 加上
php_admin_value[error_log] = /usr/local/php/var/log/php_errors.log
php_admin_flag[log_errors] = on
有时可能错误日志文件不自动创建,可以执行:touch /usr/local/php/var/log/php_errors.log && chown www:www /usr/local/php/var/log/php_errors.log
然后你访问,会得到以下的报错:
1 PHP Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/default/laravel/bootstrap/autoload.php) is not within the allowed path(s): (/home/wwwroot/default/laravel/public:/tmp/:/var/tmp/:/proc/) in /home/wwwroot/default/laravel/public/index.php on line 22
2
3 PHP Warning: require(/home/wwwroot/default/laravel/bootstrap/autoload.php): failed to open stream: Operation not permitted in /home/wwwroot/default/laravel/public/index.php on line 22
4
5 PHP Fatal error: require(): Failed opening required ‘/home/wwwroot/default/laravel/public/../bootstrap/autoload.php‘ (include_path=‘.:/usr/local/php/lib/php‘) in /home/wwwroot/default/laravel/public/index.php on line 22
解决
(1)检查php.ini的 open_basedir的参数 将其开启,写为自己的项目路径
(2)如果是lnmp(nginx服务器),检查 path/nginx/conf/fastcgi.conf里的 $document_root参数
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/:/home/stone/dsales/"; (/home/stone/dsales/为项目路径)
注意:如果在fastcgi.conf里没有 fastcgi_param PHP_ADMIN_VALUE……自行添加
如果这样还是报错的话,那就改为 fastcgi_param PHP_ADMIN_VALUE "open_basedir=NULL";
这样的话你就应该可以访问到项目了。。。