最新ThinkPHP V5在iisnginxapache下的安装过程包含伪静态引起的错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最新ThinkPHP V5在iisnginxapache下的安装过程包含伪静态引起的错误相关的知识,希望对你有一定的参考价值。


针对不同的WEB服务器,Thinkphp V5需要的伪静态内容是不一样的,

而且在Apache服务器上,模块化运行与采用FCGI运行方式的伪静态也有细微差别




---------------------------apache、nginx、iis、安装TP5之Apache篇开始---------------------------


特别一提的地方(重要)

在Apache服务器上,采用模块化运行与采用FCGI运行方式的伪静态也有细微差别、

所以有的人在安装ThinkPHP V5的时候就会出现No input file specified.的错误提示


下面这个伪静态是Apache采用模块运行方式时需要配置的伪静态内容,详细的运行方式可查看我以往的博客内容

(如果您当前的Apache采用Fcgi模式运行PHP,那么这个伪静态就会出现“No input file specified.错误提示)

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>




上面的伪静态为什么有的人能正常使用,而有的人使用确出现No input file specified.”的提示呢?

那是因为Apache只有采用fastcgi模式的时候,才出现不能识别PATH_INFO的情况,所以在windows下很多人安装ThinkPHP V5的时候都没出现这个问题,因为大部分windows用户安装的Apache是采用模块化运行方式的,而在linux上以及在windows系统下采用FCGI运行模式的都出现了“No input file specified.”提示。


如果你采用FCGI运行方式的时候出现此类提示,只需要把

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

改写成

RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]    即可,改写后的伪静态如下(注意E=PATH_INFO:$1)

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]
</IfModule>


友情提示:PHPWAMP支持多模式,主界面默认站点是模块化运行方式,站点管理是Fcgi模式,

所以主界面的默认站点可以直接使用ThinkPHP V5默认的伪静态,而站点管理需要使用修改后的伪静态。


选择相关设置切换php版本后选择这里启动apache2.4

技术分享图片


选择这里默认的三个版本都可以启动apache2.4,这里选择的版本仅仅是默认站点的版本

默认站点采用的常见的模块运行方式,所以可以直接使用上面第一个未经改动的伪静态文件。

技术分享图片


启动然后再站点里面添加站点,复制上面修改过的伪静态进去就可以了,因为站点管理是FCGI模式

在添加站点的时候,网站根目录应该选择public文件夹,这样就可以打开默认的ThinkPHP V5页面了。

技术分享图片


如果你使用默认的伪静态,由于站点管理是FCGI模式,那么就会出现下面的No input file specified.”提示

技术分享图片



所以我们必须改用修改后的伪静态,修改后的伪静态启用后就可以正常打开这个页面了,如下图所示。

技术分享图片






---------------------------apache、nginx、iis、安装TP5之nginx篇开始---------------------------



在Nginx服务器上安装ThinkPHP V5的伪静态如下所示

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


具体流程如下图,点击菜单相关设置,然后我们先启用Nginx服务器

技术分享图片


打开nginx站点管理添加站点,网站目录选择public文件夹,就不用在url后面添加public访问了

技术分享图片


添加站点后,我们会发现添加的站点根目录自动生成了属于Nginx服务器的伪静态文件“nginx.htaccess”

技术分享图片


打开此伪静态文件,里面默认集成了常见网站的伪静态,找到属于TP5的伪静态,去掉前面#号后即可(重启Nginx)

你也可以把里面默认的伪静态全部删掉,直接复制前面我提供的Nginx下TP5的伪静态也是行的(设置后须重启Nginx)

技术分享图片



如果你的Nginx伪静态设置错误,通常访问如下路径“http://localhost:8088/index/index/index/”将会出现404错误

技术分享图片




如果正确的设置了Nginx下TP5程序的伪静态,打开该页面才能正常显示

技术分享图片





---------------------------apache、nginx、iis、安装TP5之iis篇开始---------------------------



在iis服务器上安装ThinkPHP V5的伪静态还需要额外的这几个步骤



1、服务器需要安装:URL Rewrite

URL Rewrite下载地址http://down.51cto.com/data/2439396


2、在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:

加在 <system.webServer>里面就可以了


<rewrite>
 <rules>
 <rule name="OrgPage" stopProcessing="true">
 <match url="^(.*)$" />
 <conditions logicalGrouping="MatchAll">
 <add input="{HTTP_HOST}" pattern="^(.*)$" />
 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>
 <action type="Rewrite" url="index.php/{R:1}" />
 </rule>
 </rules>
 </rewrite>



具体步骤,打开PHPWAMP的相关设置,点击IIS站点管理

此IIS站点管理可以操作系统内置的IIS服务器,快速添加PHP站点,可以多个PHP版本同时运行

添加后的站点可以在phpwamp的iis站点管理进行修改,也可以在系统的iis管理器里面修改,通用。

技术分享图片


添加一个iis站点,php版本任意选,选择版本的同时还可以自定义php版本,支持32位/64位PHP任选。

技术分享图片


添加站点后重启iis,然后访问路径“http://localhost:8088/index/index/index”会出现404,因为还没设置伪静态

技术分享图片



在前面提供的urlrewrite2.exe文件下载地址下载后,进行urlrewrite2.exe的安装,安装完成后导入IIS服务器下TP5的伪静态即可

技术分享图片




以上是关于最新ThinkPHP V5在iisnginxapache下的安装过程包含伪静态引起的错误的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP V5.0 正式版发布

ThinkPHP升级指导

Thinkphp V5.X 远程代码执行漏洞 - POC(搬运)

ThinkPHP V5.0 正式版发布

ThinkPHP v5 新漏洞攻击案例首曝光,阿里云已可告警并拦截

LMSAdmin-THINKPHP v5.1.33 + ACE v1.4整合开发后台管理系统