thinkphp5開發的網站出現”No input file specified”(php版本5.6.27)


thinkphp5開發的網站出現”No input file specified”(php版本5.6.27)

一、總結

一句話總結:搜索引擎一定要用google,比百度節約時間一萬倍,google啊,google搜索出來直接有視頻,還有其他很多好處

google

 

1、出現的問題是什么?

No input file specified

訪問php頁面跳出來一句 ”No input file specified”

這句錯誤提示的意思是不能識別訪問的路徑

 

2、出現問題的原因是什么?

fast_cgi

原因在於使用的PHP5.6是fast_cgi模式,而在某些情況下,不能正確識別path_info所造成的錯誤。

 

3、如何解決?

.php?
Rewrite模塊
允許 .htaccess

ab兩個步驟一般不需要我們操作,核心就是c步驟

注意:thinkphp的.htaccess規則實在public目錄下

這里才是網站的根目錄

 

c、將.htaccess規則里面的匹配.php改成匹配.php?(核心操作)

默認的.htaccess里面的規則:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
“No input file specified.”,是沒有得到有效的文件路徑造成的。

修改偽靜態規則,如下:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
有沒有發現不同?

其實就是在正則結果“/$1”前面多加了一個“?”號,問題也就隨之解決了。

 

a、加載Rewrite模塊(默認不需要操作)

在apache的conf目錄下httpd.conf(apache的配置文件)中找到

LoadModule rewrite_module modules/mod_rewrite.so

這句,去掉前邊的注釋符號“#”,或添加這句。

 

b、允許使用“.htaccess”文件(默認不需要操作)

在apache配置域名的時候允許使用“.htaccess”文件

例如:

<VirtualHost *:80> DocumentRoot "C:\phpStudy\PHPTutorial\WWW\m_Orchestrate-master\m_Orchestrate\public" ServerName mo.eduhk.hk <Directory "C:\phpStudy\PHPTutorial\WWW\m_Orchestrate-master\m_Orchestrate\public"> Options -Indexes -FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost>

 

允許在任何目錄中使用“.htaccess”文件,將“AllowOverride”改成“All”(默認為“None”):

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#

AllowOverride All

在Windows系統下不能直接建立“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用記事本編輯。

 

4、thinkphp的根目錄public中的.htaccess修改好后的樣子?

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

 

 

5、正則里面的“?”是什么意思?

零次或一次 非貪婪

“?:”非獲取匹配,匹配冒號后的內容但不獲取匹配結果,不進行存儲供以后使用。

單獨的“?”:匹配前面的子表達式零次或一次。

當“?”緊跟在任何一個其他限制符(*,+,?,{n},{n,},{n,m})后面時,匹配模式是非貪婪的。非貪婪模式盡可能少地匹配所搜索的字符串,而默認的貪婪模式則盡可能多地匹配所搜索的字符串。

 

6、.htaccess文件是做什么的?

分布式配置文件 目錄 配置

.htaccess文件(或者"分布式配置文件"),全稱是Hypertext Access(超文本入口)。提供了針對目錄改變配置的方法, 即,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件, 以作用於此目錄及其所有子目錄。作為用戶,所能使用的命令受到限制。管理員可以通過Apache的AllowOverride指令來設置。

 

7、.htaccess文件中如何配置系統允許上傳的文件的大小及數目?

IfModule php_value

apache中的都配置都是IfModule這樣一塊一塊的

<IfModule mod_php5.c>
    php_value upload_max_filesize 100M
    php_value post_max_size 100M
</IfModule>

 

 

 

 

二、內容在總結中

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM