Listening to the Words

thinkphp5版本5.5以上”No input file specified“问题解决

  • 使用TP5开发时想要隐藏路由中index.php,环境是apache但是会报出No input file specified错误,第一反应是apache的路由转发规则出现了问题,但是奇怪的问题是php版本低于5.5就没有问题,折腾了一段时间,找到了解决办法

首先要开启Apache配置http.conf中mod_rewrite.so模块

#LoadModule remoteip_module modules/mod_remoteip.so
#LoadModule request_module modules/mod_request.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule sed_module modules/mod_sed.so
#LoadModule session_module modules/mod_session.so

修改虚拟主机配置

<VirtualHost *:80>
    DocumentRoot "######"
    ServerName http://###.###.###
    ServerAlias 
  <Directory "#####">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
  </Directory>
</VirtualHost>

找到本地.htaccess文件修改如下:

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

重启服务器,index.php就被隐藏了,如果还不能的话,需要多试试主要是本地转发规则的原因

点赞