fastadmin(tp5)部署lnmp平台解决方案,史诗级爬坑500,502,404等解决方案

shijian 9天前 141

准备上线测试下,纳尼,途中可谓艰辛,多次遇到500,502,404。用的是lnmp一键安装的环境,爬坑途中发现原来作者考虑的够多了,全是干货,感谢。

文档上答案
1、https://doc.fastadmin.net/docs/faq.html#%E5%AE%89%E8%A3%85%E5%90%8E%E5%8F%AA%E8%83%BD%E8%AE%BF%E9%97%AE%E9%A6%96%E9%A1%B5%EF%BC%8C%E5%85%B6%E5%AE%83%E9%A1%B5%E5%9D%87%E6%8A%A5404%20page%20not%20found-13
2、
https://doc.fastadmin.net/docs/faq.html#%E5%AE%89%E8%A3%85%E6%97%B6%E6%8F%90%E7%A4%BA%E6%97%A0%E6%B3%95%E5%86%99%E5%85%A5application/database.php-19

如果以上解决不了。就采用我下面的配置,亲测有效

一、pathinfo问题
nginx 默认不支持pathinfo解析,需要自己配置,因为对nginx不太熟悉,自己配的漏洞百出,坑底半天没出来,最后找到lnmp环境已经提供,直接上配置。

listen 18888;
index index.html index.htm index.php;
root /home/wwwroot/fastadmin/public;

include enable-php-pathinfo.conf;
include thinkphp.conf;
二、
详细配置
1、enable-php-pathinfo.conf

location ~ 1.php(/|$)
{

fastcgi_pass  unix:/tmp/php-cgi.sock; # 这个自己适配 不行的话用端口 127.0.0.1:9000
fastcgi_index index.php;
include fastcgi.conf;  # 后面有
include pathinfo.conf;  # 后面有

}

2、thinkphp.php

location / {

if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php?s=/$1 last;
    break;
}

}

3、还有 fast-cgi
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; # 注意此处 待会有坑
4、 pathinfo.conf
fastcgi_split_path_info ^(.+?.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;

三、500 服务器错误问题
此原因由于导入出错造成,而且白屏无错误提示,先在index.php里加上:

error_reporting(E_ALL);
ini_set('display_errors', '1');
scandir
然后发现:Fatal error: require(): Failed opening required。。。。,找资料得知发现是php open_basedir 配置的问题,php不能引入其授权目录上级及其以上的文件,默认配置在php.ini,一般都没有设置,默认注释。我们这里选择在fast-cgi中配置,当然在php.ini或者其他地方配置。注意到我上面的标的注意点。我们配置到public下,在require上级目录时没有权限。
配置到其上级目录。

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/";
1
重启或者重新载入,大工告成。终于可以看到页面了。


  1. /
最后于 9天前 被shijian编辑
最新回复 (1)
  • zhangcjl 7天前
    感谢TA
    0 引用 2

    joy 在ubuntu18.04下lnmp,只要配置好了rewrite就可以正常跑了

  • 未登录
    3
返回