apache http server 停止工作_配置nginx,Apache支持pathinfo模式-什么是phpinfo模式
我也配置了很多次了,前面都快放棄了,最近在學(xué)習(xí)resuful框架寫api,代碼實現(xiàn)上沒出現(xiàn)啥問題,倒是這個path_info的環(huán)境配置把我弄的比較郁悶
你一定見過類似這樣的路徑:http://www.04007.cn/index.php/home/index/action/3408.html,對,這就是phpinfo模式。從上面可以看出其有以下幾個特點。
1,URL中帶有入口文件全名,即index.php,
2,在入口文件后面依然跟有路徑比如上面的/home/index/action/3408.html
3,很多框架中后面分別是/模塊/控制器/方法參數(shù)等,Thinkphp就是這樣的。當(dāng)然這個不一定非得是模塊控制器方法的組成。
按照常理來理解,index.php后面跟隨著路徑,那么index.php就相當(dāng)于一個文件夾了。但實際上又不存在index.php這個文件夾,所以如果沒有開啟phpinfo模式,那么這個路徑解析就會報找不到文件。而只有在開啟phpinfo模式之后,服務(wù)器才會去執(zhí)行index.php這個文件。從服務(wù)器上的配置方法也可以看出來。
本人使用的是集成安裝環(huán)境phpstudy,這個環(huán)境用的時間比較久
先檢查這三個配置
一:
在PHP安裝文件夾下找到PHP.INI,
將
;cgi.fix_pathinfo=1
改為
cgi.fix_pathinfo = On
保存,重啟服務(wù)器即可
也有的說將
;cgi.fix_pathinfo=1
之前的 ; 去掉,即改為
cgi.fix_pathinfo=1
保存,重啟服務(wù)器的。
但是我嘗試發(fā)現(xiàn),這樣并不能解決問題,于是決定采用第二種方法;
二:
打開Apache安裝文件夾下的conf文件夾,找到httpd.conf文件中找到下面這段代碼
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
AcceptPathInfo On //加入這行代碼就OK了
不幸的是,按照上面的方法,還是失敗了。木辦法,只能試下第三種方法了;
三:
在配置文件中加入
AcceptPathInfo On
這樣 Apache 就可以支持針對 php 文件的 PathInfo 了。
于是,又充滿希望的試了一下,可惜,還是沒有成功。
我想,這PathInfo跟URL有關(guān),那會不會是因為Apache服務(wù)器沒有開啟mod_rewrite模塊的關(guān)系呢?于是,我在Apache的配置文件(Apache安裝目錄的conf文件夾下的httpd.conf文件)里找到:
#LoadModule rewrite_module modules/mod_rewrite.so
將前面的#去掉,改為:
LoadModule rewrite_module modules/mod_rewrite.so
下面是nginx服務(wù)器開啟phpinfo模式的方法:
location ~ [^/].php(/|$){ # comment try_files $uri =404; to enable pathinfo #try_files $uri =404; #把這行代碼注釋,讓服務(wù)器不嘗試去加載路徑文件 fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; include pathinfo.conf; #加載phpinfo.conf配置}重啟nginx服務(wù)器即可。對于Apache服務(wù)器,需要先加載rewrite模塊,將http.conf中的配置AllowOverride None將None改為 All,重啟Apache即可。在.htaccess文件中加入
RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]注:在配置虛擬域名的時候我的配置
我給個我的配置成功的php.ini和httpd.comf把,我在另外一臺電腦沒有成功的原因可能是我多加了個這個指向到項目地址的配置,例如我下面這個配置把
DocumentRoot "E:phpstudyWWWestful"
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
AcceptPathInfo On
Require all granted
指向到了項目單項目的根地址下把
我的配置的下載地址:
http://download.csdn.net/download/qq_27229113/9981419
最近在學(xué)習(xí)用restful框架寫api,發(fā)現(xiàn)自己路由存在這個問題
我把虛擬域名指向為www.restfulapi.com/
虛擬域名地址指向為restfulapi這個文件夾
我的api目錄寫在restful/index.php里面,有兩個方法,分別是users和articles兩個方法
如果我輸入http://www.restfulapi.com/restful/路由會發(fā)現(xiàn)還報這個錯誤Notice: Undefined index: PATH_INFO in E:phpstudyWWWestfulapiestfulindex.php on line 107
{"error":"請求資源不被允許"}
但是輸入這個路由時http://www.restfulapi.com/restful/users
便有數(shù)據(jù)反饋{"error":"用戶名不能為空"}
在代碼index.php打印加載的配置
var_dump($_SERVER);反饋結(jié)果為array(39) { ["REDIRECT_STATUS"]=> string(3) "200" ["HTTP_HOST"]=> string(18) "www.restfulapi.com" ["HTTP_CONNECTION"]=> string(10) "keep-alive" ["HTTP_CACHE_CONTROL"]=> string(9) "max-age=0" ["HTTP_USER_AGENT"]=> string(108) "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36" ["HTTP_UPGRADE_INSECURE_REQUESTS"]=> string(1) "1" ["HTTP_ACCEPT"]=> string(85) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" ["HTTP_ACCEPT_ENCODING"]=> string(13) "gzip, deflate" ["HTTP_ACCEPT_LANGUAGE"]=> string(14) "zh-CN,zh;q=0.8" ["PATH"]=> string(272) "C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program Files (x86)Microsoft SQL Server100ToolsBinn;C:Program FilesMicrosoft SQL Server100ToolsBinn;C:Program FilesMicrosoft SQL Server100DTSBinn;C:adb" ["SystemRoot"]=> string(10) "C:Windows" ["COMSPEC"]=> string(27) "C:Windowssystem32cmd.exe" ["PATHEXT"]=> string(53) ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC" ["WINDIR"]=> string(10) "C:Windows" ["SERVER_SIGNATURE"]=> string(0) "" ["SERVER_SOFTWARE"]=> string(47) "Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.5.38" ["SERVER_NAME"]=> string(18) "www.restfulapi.com" ["SERVER_ADDR"]=> string(9) "127.0.0.1" ["SERVER_PORT"]=> string(2) "80" ["REMOTE_ADDR"]=> string(9) "127.0.0.1" ["DOCUMENT_ROOT"]=> string(26) "E:/phpstudy/WWW/restfulapi" ["REQUEST_SCHEME"]=> string(4) "http" ["CONTEXT_PREFIX"]=> string(0) "" ["CONTEXT_DOCUMENT_ROOT"]=> string(26) "E:/phpstudy/WWW/restfulapi" ["SERVER_ADMIN"]=> string(18) "admin@phpStudy.net" ["SCRIPT_FILENAME"]=> string(44) "E:/phpstudy/WWW/restfulapi/restful/index.php" ["REMOTE_PORT"]=> string(5) "59338" ["REDIRECT_URL"]=> string(14) "/restful/users" ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" ["REQUEST_METHOD"]=> string(3) "GET" ["QUERY_STRING"]=> string(0) "" ["REQUEST_URI"]=> string(14) "/restful/users" ["SCRIPT_NAME"]=> string(18) "/restful/index.php"["PATH_INFO"]=>string(6) "/users" ["PATH_TRANSLATED"]=> string(32) "E:phpstudyWWWestfulapi甥敳獲" ["PHP_SELF"]=> string(24) "/restful/index.php/users" ["REQUEST_TIME_FLOAT"]=> float(1505533005.973) ["REQUEST_TIME"]=> int(1505533005) } {"error":"用戶名不能為空"}發(fā)現(xiàn)["PATH_INFO"]=>string(6) "/users"
說明這個path_info配置只指向到了restful/users和restful/articles目錄下我懷疑是我的路由配置的原因在打開我的 .htaccess文件夾
RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]還有我發(fā)現(xiàn)運行這個http://www.restfulapi.com/restful/users路由的時候會經(jīng)過二次跳轉(zhuǎn)才訪問到最終api,感覺這里存在問題經(jīng)過測試得出下面?zhèn)€人結(jié)論
在實際非api注冊中的路由是www.restfulapi.com,可以完成用戶注冊,而我們使用resuful框架進行api注冊用戶時的路由是www.restfulapi.com/restful/users和文章api www.restfulapi.com/restful/articles的路由既可以是個人對路由理解不夠透徹吧!總結(jié)下,上面的路由配置和php.ini和http.conf配置才是重點,完成好就可以實現(xiàn)php的pathinfo模式,總結(jié)
以上是生活随笔為你收集整理的apache http server 停止工作_配置nginx,Apache支持pathinfo模式-什么是phpinfo模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android下拉刷新动画效果代码_vu
- 下一篇: 在python中、列表中的元素可以是_在