• iis部署php项目


    今天跟着学习了如何在IIS下部署php项目,操作很简单,记录一下步骤!

    1.启动iis服务器

      

    最后点击确定就完成了

    2.打开iis

    点击进入即可

    3.创建网站

    进入添加网站。

    添加注意事项如图所示!

    启动、浏览、重启、停止网站这个如图所示。

    需要说明的是  只要修改了配置就必须重启下网站

    4.php设置

      ①添加默认文档

      

    写入  index.php就行

    ②处理程序映射

      

    选择“添加模块映射”

    说明

      请求路径:*.php *  知道正则就知道原因了

      模块:这个必须在启动IIS的时候,必须勾选"CGI",不然选择的时候找不到 FastCgiModule

    到此为止  php项目已经是在iis上部署好了【在项目根目录下会生成web.config文件】。但是对于那些需要使用伪静态的  比如  yii2 美化url路由 ....的话,还需要以下的操作:

    1.安装urlrewrite

      百度URLREWRITE 下载并安装。

    2.使用URL重写

      安装成功URLREWRITE后,关闭iis后再次启动。接着在页面就会出现url重写项。点击它即可

    url重写做好之后,会吧配置都写在  web.config 文件里

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <defaultDocument>
                <files>
                    <add value="index.php" />
                </files>
            </defaultDocument>
            <handlers>
                <add name="php" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="E:phpstudyphpphp-7.0.12-ntsphp-cgi.exe" resourceType="File" />
            </handlers>
            <rewrite>
                <rules>
                    <rule name="wechat">
                        <match url="^/wechat/(.*)$" ignoreCase="false" />
                        <conditions logicalGrouping="MatchAll">
                            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="/wechat/index.php/{R:1}" />
                    </rule>
                     <rule name="已导入的规则 1">
                         <match url="^(.*)$" ignoreCase="false" />
                         <conditions logicalGrouping="MatchAll">
                             <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                             <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                         </conditions>
                         <action type="Rewrite" url="index.php/{R:1}" />
                     </rule>
                </rules>
            </rewrite>
        </system.webServer>
    
    
    </configuration>

    大家注意了 。我上面的配置有两个重点。

    第一  解决了  “关于IIS上Yii2的url路由美化问题”

    第二 解决了 “在IIS环境下,yii2web项目如果web目录下有多个应用的话,如何url路由美化的问题”。经过测试,如果我只配置(这个规则是导入web目录下的.htaaccess文件):

                     <rule name="已导入的规则 1">
                         <match url="^(.*)$" ignoreCase="false" />
                         <conditions logicalGrouping="MatchAll">
                             <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                             <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                         </conditions>
                         <action type="Rewrite" url="index.php/{R:1}" />
                     </rule>

    但是问题来了,我web下还有一个wechat目录,用于微网站的使用。在我的测试中,发现我们项目上使用的已经美化的url路径直接报错“404”,后面经过我们的调整,然后就把配置改成:

            <rewrite>
                <rules>
                    <rule name="wechat">
                        <match url="^/wechat/(.*)$" ignoreCase="false" />
                        <conditions logicalGrouping="MatchAll">
                            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="/wechat/index.php/{R:1}" />
                    </rule>
                     <rule name="已导入的规则 1">
                         <match url="^(.*)$" ignoreCase="false" />
                         <conditions logicalGrouping="MatchAll">
                             <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                             <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                         </conditions>
                         <action type="Rewrite" url="index.php/{R:1}" />
                     </rule>
                </rules>
            </rewrite>

    如果把这两个规则换个位置的话,结果会发现微网站的美化地址又是404

    我这里解释下原因:规则应该是从上往下配置,选择最优配置。

    最后总结下:本文说明如何在IIS环境下配置php项目以及在iis优化yii2的url路由问题

    /********************************************************2019年-06-02**********************************************************************************************************************************************************************/

    哇,已经有两万的阅读了,看来iis还是很厉害的了。今天帮朋友处理window iis 管理php网站,又记住了几个常用的配置。于是乎,就上来更新下博客,便于后期操作。

    1.文章上面的“处理程序映射”都是针对某个网站的配置的,其实更通用的方式是在

    配置。同时我们可以配置多个php版本。

    2.程序映射还可以使用脚本映射,对于脚本映射需要下载 php版本对应的isapi扩展,例如:php5isapi.dll,但是这个操作我个人不推荐使用,好像只有早期的版本可以支持。我在这里说明,是因为有可能会遇到有些老项目人家部署php时,是这么干的,就像今天我帮朋友处理一样,那上面有个项目就是这样干的

    3.处理程序映射的时候,有个请求限制,可以将设置改为文件和文件夹

    4.还可以下载phpmanager,用于管理php的配置

    /********************************************************2019年-06-11*********************************************************************************************************************************************************************/

      今天更新一下phpManager的使用说明,

      问题:当安装一个php版本之后,我们试着添加一份php.ini[修改php.ini.production or php.ini.development],然后重启iis,然后运行项目【譬如:phpmyadmin】,这时你会发现,缺少扩展,可是你配置文件已经开启了扩展,那么问题出在哪呢?

      解答:

          1、其实windows 默认安装的话, Loaded Configuration File 即读取php.ini配置文件的路径。使用IIS,那就是一定要把 PHP.INI 放在 Windows 的系統路径下 (C:/WINDOWS 或 C:/WINNT) 。所以你修改你php所在目录下的配置文件是没有起到作用的,必须将文件复制到对应目录下 (参考:https://blog.csdn.net/letian003/article/details/5995856)。

          2、那么这个时候phpManager就派上用场了,我们可以在https://www.iis.net/downloads/community/2010/09/php-manager-for-iis-7 官网去下载对应iis版本的phpManager 

          3、下载完成,重启iis会发现phpManager在里面了,双击PHP Manager后,点击“Register new PHP Version”,然后选择好php目录中的php-cgi.exe,然后php.ini就会为适合IIS7.5的配置默认给你生成好了

     

      

  • 相关阅读:
    如何在ubuntu里面使用JNI?
    sql server 关键字一
    自己编写的 objectDataSource 配合 GridView 实现分页...
    委托和匿名委托的比较
    实现 IEnumerable IEnumator 接口的类,可直接用作 Gridivew 的数据源
    ASP.NET 中的页面事件执行顺序
    泛型,集合的根本区别
    匿名委托的示例,贴一下以供参考...
    ajax "Sys 未定义" 的问题解决方法
    抽象工厂模式(C#)
  • 原文地址:https://www.cnblogs.com/YangJieCheng/p/8119505.html
Copyright © 2020-2023  润新知