Nginx下ThinkPHP5的布局方式详解,TinkPHP5安顿Nginx服务器难题

by admin on 2019年7月4日

正文首要给大家介绍了关于Nginx下ThinkPHP5的安排方式,分享出去供我们参谋学习,下边话相当少说,来共同拜会详细的介绍:

难点简述:thinkphp5怎么在url访谈中去掉public。

复制代码 代码如下:

url里public目录的躲藏

实验景况:

出于安全的思虑,TP5的入口文件改成位于public下了,因为那样的话能幸免被恶心用户访问到“/thinkphp/”、“/vendor/”等等那些目录下的文本。所以当您以此前的习于旧贯将网址documentroot配置为品种根目录的时候就能够须要在url前面加上/public/来访谈。当然大概也是有童鞋把入口文件放回到根目录下,然后依旧以在此之前3.x版那样的花样拜望了。

Linux、nginx、mysql、php(lnmp一键集成1.4测量试验版,更加多新闻lnmp.org)

其一就是pathinfo情势

不过很分明,这么做并非那么的不错。

本文兼顾的题目:

在不怀念路由的情状下,第叁个参数会被分析成模块名称(假使启用了分组的话,则相继将来递推),第贰个参数会被深入分析成操作,后边的参数是显式传递的,并且必须成对出现,比方:

一旦项目目录为“/web/wwwroot/augsky.com”,那么大家在网址的nginx配置文件之大校root配置为:

1.安然无事的配备(同一vps多站点)

复制代码 代码如下:

root /web/wwwroot/augsky.com/public;

2.融洽的站点入口

但是必定要记得将open_basedir设置为上超级项指标根目录下,不然应用会未有权力调用除public目录下的别的文件,网址会报500无法访问。(open_Nginx下ThinkPHP5的布局方式详解,TinkPHP5安顿Nginx服务器难题。basedir的布局暗中同意在php.ini里面,但倘若是多少个虚构机情状的话有希望会在依次网址的user.ini文件里,这一个要依据自个儿的骨子里情状来。)具体配置如下:

陈设难题重述:

常常的U景逸SUVL里面含有index.php,为了完成越来越好的SEO效果说不定必要去掉U福睿斯L里面的index.php
,通过UENCOREL重写的办法可以达标这种效应,日常须求服务器开启U中华VL_REW福特ExplorerITE模块本领帮助。
上边是Apache的陈设进程,可以参照下:
1、httpd.conf配置文件中加载了mod_rewrite.so模块
2、AllowOverride None 将None改为 All
3、确保URL_MODEL设置为2
4、把下边包车型地铁内容保留为.htaccess文件放到入口文件的同级目录下

open_basedir=/web/wwwroot/augsky.com:/tmp/:/proc/

是因为thinkphp5经过重构,和thinkphp3.2有非常的大的不及,个中前面包车型地铁入口文件index.php由/index.php改为/public/index.php,

复制代码 代码如下:

隐身入口文件index.php:

那就是说难点来了:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
Nginx下ThinkPHP5的布局方式详解,TinkPHP5安顿Nginx服务器难题。RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

location /
  {
    try_files $uri $uri/ /index.php?s=$uri&$args;
    #如果请求不是文件或目录,则将uri交给index.php处理,同时保留参数
  }

1.假诺按lnmp集成碰着提供的措施(lnmp vhost
add)加多虚构站点,访谈站点就要加个二级目录
,如

对此重来没接触过.htacces文件的可以百度部分,这里提醒一下,保存的文书名便是.htaccess,只怕看起来只有后缀,便是如此,别又在前方加个 
***.htaccess。

说一下try_files:

重启Apache之后,原来的

就足以经过拜候

简化了URL地址

try_files
语法: try_files file1 [file2 ... filen] uri
     OR
  try_files file1 [file2 ... filen] =code
默认值: 无
作用域: server location

之所认为了能够让拜访链接变得特别和睦(即

你只怕感兴趣的文章:

  • thinkphp三种url访谈情势详解
  • thinkphp的U宝马7系L路由法规与计划实例
  • 让Nginx协理ThinkPHP的U奥迪Q5L重写和PATHINFO的艺术共享
  • ThinkPHP中pathinfo的探问情势、路线访问方式及USportageL重写计算
  • 在nginx中布署pathinfo方式援救thinkphp的UQashqaiL重写
  • 让ThinkPHP援助大小写url地址访问的章程
  • ThinkPHP中url掩饰入口文件后接收alipay传值的不二等秘书技
  • thinkPHP5.0框架模块设计详解
  • thinkPHP5.0框架命名空间详解
  • thinkPHP5.0框架自动加运载飞机制深入分析
  • thinkPHP5.0框架引入Traits功效实例深入分析
  • thinkPHP5.0框架UHavalL访谈方法详解

try_files扶助两个参数,每种参数代表二个文本,系统将按顺序检查这个文件是还是不是存在,存在就径直实行,斜线“/”结尾代表目录,若都不存在,则会重定向到结尾八个参数指向的文书恐怕再次来到钦赐的http状态码。

root/home/wwwroot/xxx.com/;

pathinfo配置

改为:

在布局文件之中增添这一段(要是你是lnmp一键包用户,请略过这一段往下翻):

root/home/wwwroot/xxx.com/public;

location ~ [^/]\.php(/|$) {
  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_pass unix:/tmp/php-cgi.sock;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
  fastcgi_param SCRIPT_NAME $real_script_name;
  fastcgi_param PATH_INFO $path_info;
  include  fastcgi_params;
}

那么难题来了,由于lnmp意况考虑到虚构站点个其余拜访目录权限难题,于是在/usr/local/nginx/conf/fastcgi.conf

上边须要验证的是fastcgi_pass的安装,那个得依照你实在的php版本和设置目录来设定。

里陈设了

好,做完这几个之后,保存,重启nginx和php就会立竿见影了。假如您是lnmp一键包用户的话不用地方那样设置,往上边看:

fastcgi_param
PHP_ADMIN_VALUE”open_basedir=$document_root/:/tmp/:/proc/”;

lnmp一键包pathinfo的设置

那么每种站点的访谈权限就限制在分其余document_root里了,

其实lnmp一键包里面包车型地铁pathinfo军哥已经都写好了,大家只须要把include
enable-php.conf;修改成include
enable-php-pathinfo.conf;然后重启lnmp就消除了。

于是乎,我们修改的root(root
/home/wwwroot/xxx.com/public;)就把权力限制在public目录之后,

#include enable-php.conf;或者,你直接注释掉这一行,在下面添加新的一行
include enable-php-pathinfo.conf;

软件框架结构根目录下的application等都不能访谈了,那么此时大家要缓和的主题素材是:

便是这么归纳。上边顺便附上在url里掩饰模块的措施

2.既要保持root
/home/wwwroot/xxx.com/public;,又要让虚构站点有/home/wwwroot/xxx.com目录的访问权限

url掩盖私下认可模块index

那便是说可以修改/usr/local/nginx/conf/fastcgi.conf配置文件:

很简短,在入口文件之中定义常量BIND_MODULE为您接纳的模块就好了,以私下认可的index为例:

fastcgi_param
PHP_ADMIN_VALUE”open_basedir=$document_root/:/tmp/:/proc/”;

define('BIND_MODULE', 'index');

改为:

这般,在url里面不会在有模块名这一流目录了。要精晓,层级少一些的url对SEO是有利润的。

fastcgi_param
PHP_ADMIN_VALUE”open_basedir=/home/wwwroot/xxx.com/:/tmp/:/proc/”;

下边是nginx里面location的合作准绳

但难点来了,/usr/local/nginx/conf/fastcgi.conf是集体配置文件,选用这种写死的方法会招致其余站点不可用,

Nginx location的特出准则

为了兼顾其余虚拟站点,if_not_empty派上用场了,

  • ~ 波浪线表示实践二个正则相称,区分轻重缓急写
  • ~* 表示执行多少个正则相配,不区分轻重缓急写
  • ^~
    ^~表示常常字符相配,倘使该选项相称,只相称该选取,不相称其余选项,一般用来合作目录
  • = 进行普通字符正确匹配
  • @ #”@” 定义三个命名的 location,使用在里头定向时,举个例子 error_page,
    try_files

修改章程为:

location 相称优先级

不更改/usr/local/nginx/conf/fastcgi.conf配置文件里的原配置,而在

  • = 准确相配会第一个被管理。假诺开掘纯粹相配,nginx截止寻觅其他相称。
  • 普通字符相配,正则表明式法规和长的块法则将被事先和查询相称,也便是说如若该项相称还需去看有未有正则表明式匹配和更加长的相配。
  • ^~
    则只相称该法则,nginx甘休搜索其余匹配,不然nginx会继续管理其余location指令。
  • 谈起底相称理带有”~”和”~*”的命令,假如找到呼应的同盟,则nginx截至找寻别的相称;当未有正则说明式只怕尚未正则表明式被相配的事态下,那么相配程度最高的逐字相称指令会被应用。

fastcgi_param
PHP_ADMIN_VALUE”open_basedir=$document_root/:/tmp/:/proc/”;

总结

尔后增添

以上正是那篇小说的全体内容了,希望本文的剧情对大家的就学可能干活能推动一定的救助,借使有疑点我们可以留言调换,多谢大家对剧本之家的支持

fastcgi_param PHP_ADMIN_VALUE $basedir
if_bf88必发唯一官网,not_empty;#留意nginx要在1.1.11本子之后

您或许感兴趣的篇章:

  • thinkPHP5完毕数据库增多内容的主意
  • thinkPHP5完成的查询数据库并回到json数据实例
  • thinkphp连贯操作实例深入分析
  • ThinkPHP简单利用memcache缓存的方法
  • thinkPHP多域人气象下选择memcache方式分享session数据的完结方式
  • thinkPHP完成MemCache布满式缓存作用
  • thinkphp中memcache的用法实例
  • 修改ThinkPHP缓存为Memcache的方法
  • thinkPHP5.0框架安装教程
  • thinkPHP5框架数据库连贯操作之cache()用法深入分析

$basedir变量就足以在/usr/local/nginx/conf/vhost/xxx.com.conf配置文件里的include
enable-php.conf前赋值:

set$basedir”open_basedir=/home/wwwroot/dev.yunshare.net/:/tmp/:/proc/”;

优点:那样既满足了thinkphp5的布局需求,又不影响别的一般站点的使用。

症结:假设$basedir未有赋值(至少一个隶属配置有赋值),nginx -t无法通过。

注意rewrite规则:

聊到底献上thinkphp的rewrite准则:

这种写法3.2是足以的,但在此间是不可能的,不然经测验pathinfo为空

location/{

try_files $uri $uri//index.php?$query_string;

}

应该改为:

location/{

if(!-e $request_filename){

rewrite^/(.*)$ /index.php?s=/$1last;

}

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图