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

简介:

针对不同的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.错误提示)

1
2
3
4
5
6
7
8
<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)

1
2
3
4
5
6
7
8
<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

blob.png


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

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

blob.png


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

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

blob.png



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

blob.png



所以我们必须改用修改后的伪静态,启用修改后的伪静态就可以正常打开http://localhost:8033/index/index/index这个页面了

blob.png






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



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

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


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

blob.png


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

blob.png


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

blob.png


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

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

blob.png



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

blob.png




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

blob.png







---------------------------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>里面就可以了


1
2
3
4
5
6
7
8
9
10
11
12
13
<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管理器里面修改,通用。

blob.png


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

添加站点后,就会发现添加的站点根目录自动生成了属于IIS服务器的伪静态文件“web.config”

blob.png


添加网站后重启iis,然后访问路径http://localhost:8088/index/index/index会出现404,因为还没设置伪静态web.config文件

blob.png



在设置伪静态web.config文件之前,我们必须先安装伪静态模块,在前面提供的urlrewrite2.exe文件下载地址下载后,

进行urlrewrite2.exe的安装,安装完成后需要重启动电脑,然后导入IIS服务器下TP5的伪静态即可,下面继续详细步骤

blob.png


安装伪静态可能出现的原因与解决方案

如果安装伪静态时提示出现了已安装,你可以搜索以下文件,删掉“rewrite.dll”文件即可,该文件一般在C:\Windows\System32\inetsrv目录下

友情提示:安装伪静态后最好是重启一下电脑,如果安装伪静态过程中遇到任何问题,可按照此步骤重装伪静态模块

blob.png



安装完伪静态后,我们点击此处打开系统的iis管理器

blob.png



打开后就会发现如下图标,多了“URL重写”这个图标,说明安装好了伪静态模块。

blob.png




安装伪静态模块成功之后,就可以在网站根目录的web.config文件里面添加上面的伪静态规则了,

早在前面我们添加站点的时候已经自动在站点根目录下面生成web.config文件了,如下图红框所示。

blob.png



我们可以直接打开它,添加上面的伪静态内容即可,修改文件web.Config,

在中间添加rewrite节点,加在 <system.webServer>里面就可以了,如下图添加

保存后刷新http://localhost:8088/index/index/index,我们就发现能正常打开,不再出现404提示了。

blob.png




至此,Nginx、Apache、IIS三大主流WEB服务器设置伪静态的详细过程讲解完毕,

如果按照操作出现错误,请多次熟读本文中的内容,不要只看图片,文字叙述才是重点。

本文采用的是PHPWAMP_IN2全能自定义环境,可一键自定义Apache、Nginx、PHP、Mysql版本。












本文转自Lccee老师里冲51CTO博客,原文链接: http://blog.51cto.com/lccee/2068828,如需转载请自行联系原作者




相关文章
|
13天前
|
安全 Java 测试技术
Windows电脑安装Apache JMeter的详细教程
本文介绍了在Windows上安装Apache JMeter的步骤。首先,需确保安装Java JDK并配置环境变量。然后,从JMeter官网下载ZIP文件,解压至指定目录,并同样配置JMeter的环境变量。验证安装成功后,可通过命令行以GUI或非GUI模式启动JMeter,进行性能测试。
31 0
|
5天前
|
Java 应用服务中间件 Apache
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
33 7
|
2天前
|
弹性计算 应用服务中间件 Linux
双剑合璧:在同一ECS服务器上共存Apache与Nginx的实战攻略
在ECS服务器上同时部署Apache和Nginx的实战:安装更新系统,Ubuntu用`sudo apt install apache2 nginx`,CentOS用`sudo yum install httpd nginx`。配置Nginx作为反向代理,处理静态内容及转发动态请求到Apache(监听8080端口)。调整Apache的`ports.conf`监听8080。重启服务测试,实现两者高效协同,提升Web服务性能。记得根据流量和需求优化配置。【6月更文挑战第21天】
118 1
|
1月前
|
应用服务中间件 网络安全 Apache
构建高性能Web服务器:Nginx vs Apache
【5月更文挑战第16天】Nginx与Apache是两种主流Web服务器,各具优势。Nginx以其轻量级、高并发处理能力和反向代理功能见长,适合大型网站和高并发场景;而Apache以功能丰富、稳定性强闻名,适合企业网站和需要多种Web服务功能的场景。在性能上,Nginx处理高并发更优,Apache则可能在高负载时遭遇瓶颈。在选择时,应根据实际需求权衡。
|
1月前
|
Linux Apache
Centos7 安装Apache
安装Apache的步骤
52 6
|
21天前
|
Apache Windows
windows 一键安装apache服务器 windows傻瓜式安装apache2 web服务器管理软件
windows 一键安装apache服务器 windows傻瓜式安装apache2 web服务器管理软件
30 0
|
21天前
|
Apache Windows
apache2 安装时报错 ServerRoot must be a valid directory
apache2 安装时报错 ServerRoot must be a valid directory
10 0
|
21天前
|
Apache Windows
windows源码安装apache2 win安装apache 阿帕奇服务器
windows源码安装apache2 win安装apache 阿帕奇服务器
18 0
|
21天前
|
Windows
win10家庭版安装iis 微软web服务器 windows安装IIS web服务器
win10家庭版安装iis 微软web服务器 windows安装IIS web服务器
22 0
|
1月前
|
应用服务中间件 PHP nginx
Nginx-URLRewrite伪静态
请根据你的具体需求和网站结构进行适当的配置更改。这只是一个示例,可以根据你的项目需求进行定制。
24 3

推荐镜像

更多