日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

apache http server 停止工作_配置nginx,Apache支持pathinfo模式-什么是phpinfo模式

發布時間:2025/5/22 php 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache http server 停止工作_配置nginx,Apache支持pathinfo模式-什么是phpinfo模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我也配置了很多次了,前面都快放棄了,最近在學習resuful框架寫api,代碼實現上沒出現啥問題,倒是這個path_info的環境配置把我弄的比較郁悶

你一定見過類似這樣的路徑:http://www.04007.cn/index.php/home/index/action/3408.html,對,這就是phpinfo模式。從上面可以看出其有以下幾個特點。

1,URL中帶有入口文件全名,即index.php,

2,在入口文件后面依然跟有路徑比如上面的/home/index/action/3408.html

3,很多框架中后面分別是/模塊/控制器/方法參數等,Thinkphp就是這樣的。當然這個不一定非得是模塊控制器方法的組成。

按照常理來理解,index.php后面跟隨著路徑,那么index.php就相當于一個文件夾了。但實際上又不存在index.php這個文件夾,所以如果沒有開啟phpinfo模式,那么這個路徑解析就會報找不到文件。而只有在開啟phpinfo模式之后,服務器才會去執行index.php這個文件。從服務器上的配置方法也可以看出來。

本人使用的是集成安裝環境phpstudy,這個環境用的時間比較久

先檢查這三個配置

一:

在PHP安裝文件夾下找到PHP.INI,

;cgi.fix_pathinfo=1

改為

cgi.fix_pathinfo = On

保存,重啟服務器即可

也有的說將

;cgi.fix_pathinfo=1

之前的 ; 去掉,即改為

cgi.fix_pathinfo=1

保存,重啟服務器的。

但是我嘗試發現,這樣并不能解決問題,于是決定采用第二種方法;

二:

打開Apache安裝文件夾下的conf文件夾,找到httpd.conf文件中找到下面這段代碼

Options FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

AcceptPathInfo On //加入這行代碼就OK了

不幸的是,按照上面的方法,還是失敗了。木辦法,只能試下第三種方法了;

三:

在配置文件中加入

AcceptPathInfo On

這樣 Apache 就可以支持針對 php 文件的 PathInfo 了。

于是,又充滿希望的試了一下,可惜,還是沒有成功。

我想,這PathInfo跟URL有關,那會不會是因為Apache服務器沒有開啟mod_rewrite模塊的關系呢?于是,我在Apache的配置文件(Apache安裝目錄的conf文件夾下的httpd.conf文件)里找到:

#LoadModule rewrite_module modules/mod_rewrite.so

將前面的#去掉,改為:

LoadModule rewrite_module modules/mod_rewrite.so

下面是nginx服務器開啟phpinfo模式的方法:

location ~ [^/].php(/|$){ # comment try_files $uri =404; to enable pathinfo #try_files $uri =404; #把這行代碼注釋,讓服務器不嘗試去加載路徑文件 fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; include pathinfo.conf; #加載phpinfo.conf配置}

重啟nginx服務器即可。對于Apache服務器,需要先加載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

最近在學習用restful框架寫api,發現自己路由存在這個問題

我把虛擬域名指向為www.restfulapi.com/

虛擬域名地址指向為restfulapi這個文件夾

我的api目錄寫在restful/index.php里面,有兩個方法,分別是users和articles兩個方法

如果我輸入http://www.restfulapi.com/restful/路由會發現還報這個錯誤Notice: Undefined index: PATH_INFO in E:phpstudyWWWestfulapiestfulindex.php on line 107

{"error":"請求資源不被允許"}

但是輸入這個路由時http://www.restfulapi.com/restful/users

便有數據反饋{"error":"用戶名不能為空"}

在代碼index.php打印加載的配置

var_dump($_SERVER);反饋結果為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":"用戶名不能為空"}

發現["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]還有我發現運行這個http://www.restfulapi.com/restful/users路由的時候會經過二次跳轉才訪問到最終api,感覺這里存在問題

經過測試得出下面個人結論

在實際非api注冊中的路由是www.restfulapi.com,可以完成用戶注冊,而我們使用resuful框架進行api注冊用戶時的路由是www.restfulapi.com/restful/users和文章api www.restfulapi.com/restful/articles的路由既可以是個人對路由理解不夠透徹吧!總結下,上面的路由配置和php.ini和http.conf配置才是重點,完成好就可以實現php的pathinfo模式,

總結

以上是生活随笔為你收集整理的apache http server 停止工作_配置nginx,Apache支持pathinfo模式-什么是phpinfo模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。