Login
首页 > 教程资料 > 建站高手

thinkphp开发的网站开启伪静态后出现No input file specified的解决方法

小编 2025-02-04 14:12:10 人看过

2025-02-04_164351.png

     thinkphp在于Apache下的伪静态规则文件名是.htaccess,具体规则为:

<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>

     对于Nginx下的伪静态文件名是Nginx.conf,具体规则如下:

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

        IIS下的伪静态规则在web.config里,该文件通常在根目录(或运行目录下),可以通过在IIS里导入.htaccess规则的方式自动生成。
        今天想说的是一个关于IIS10提示;No input file specified&rdquo;的问题,从字面上的解释是没有指定输入文件,实际的意思就是找不到执行相应脚本的模块映射。比如用IIS创建的站点无法执行php程序,即是一个echo也无法响应。出现这个问题一般从以下几个地方排查:
        第一、检查IIS站点的脚本映射是否有PHP的FastCGIMode模块。
        第二、检查站点对应的应用程序池状态是否是无托管代码状态,如是选择一个NET托管,不管是经典还是集成选一个。
        第三、这一条最奇葩,就是检查站点的根目录下是否有.user.ini的文件,这个文件一般是Linux系统下的产物,但如果在Windows环境下测试时包含这个文件,一般也会报No input file specified错误,无法修复,删除此文件立马就好。
        第四、将RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]改为RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]。
        第五、找到PHP.ini中的doc_root行,注释掉此行,然后重启IIS。找到php.ini中的cgi.force_redirect ,去掉前面分号,把后面的1改为0,即cgi.force_redirect = 0
        如果你在本地测试的时候遇到&ldquo;No input file specified&rdquo;错误,从以上几点排查一般就可以解决。

     
     
版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章