近期開始嘗試透過 php-fpm 來執行 PHP
上網找資料時,多數的內容都跟 php-fpm.conf 和 www.conf 的設定有關
有部份的文章或討論也會提到使用 php-fpm 後無法使用 $_SERVER['PHP_AUTH_USER']
恩… 確實會有這樣的情況,但若是說 不能使用 也不是正確的說法
會有這樣的情況發生,只是單純因為架構的關係造成 php-fpm 沒辦法直接取得 Web Server 端的 Basic access authentication
相關資訊而已
因為 Basic access authentication
是 HTTP 協定的應用
而 php-fpm 通常是透過 fastcgi 或 fcgi + proxy 的方式運作
在架構上分成兩段,簡單說就是 Web server 和 Web server 以外的 php-fpm
所以,把 Web Server 的 Authorization 資訊丟給後面的 php-fpm 就可以解決
Apache 設定
1 2 3 4 5 6 7 8 9 10 11 12 |
# 在 httpd.conf 中直接加入,這是最簡單的最法 # php-fpm 同時也會取得 $_SERVER['HTTP_AUTHORIZATION'],有些程式碼是直接對這個變數做處理 SetEnvIfNoCase Authorization .+ HTTP_AUTHORIZATION=$0 # 也可以放在設定要將 php 轉給 php-fpm 的地方,和 fastcgi 或 proxy 設定放一起 # FilesMatch 設定就要注意唷,下面的設定 如果網址結尾是 / 而執行的是 index.php 就不會轉遞 <FilesMatch \.php$> SetEnvIfNoCase Authorization .+ HTTP_AUTHORIZATION=$0 </FilesMatch> |
上面兩種設定方式擇一即可,這樣就解決了!
順便找了一下 nginx 的設定方式:fastcgi_pass_header
但是沒有實測所以不確定是否可行,如果無效用關鍵字去跟 Google大神 拜碼頭吧
Nginx 設定
1 2 3 4 5 |
# 在 location 中設定 location / { fastcgi_pass_header Authorization; } |
希望對您有幫助囉