每個目錄的 php.ini 不會解析(使用 FastCGI)

每個目錄的 php.ini 不會解析(使用 FastCGI)
  • 烏班圖12.04
  • 阿帕契2.2.22
  • PHP 5.3.10 [以 libapache2-mod-fcgid 運行]

[嘗試將開發伺服器與我的網站主機相符]

我設法使用包裝器讓 fcgi 工作,並註冊了必要的處理程序以將 .html 檔案解析為 php。現在我試圖找出為什麼我的腳本不與每個目錄中的 php.ini 檔案一起運行,即據說預設行為。

來自 phpinfo(),運行於http://127.0.0.1/NEW/poop.html

Server API                               CGI/FastCGI
Virtual Directory Support                disabled
Configuration File (php.ini) Path        /etc/php5/cgi
Loaded Configuration File                /var/www/johnny/public_html/php.ini
Scan this dir for additional .ini files  /etc/php5/cgi/conf.d

它似乎可以從 [/etc/php5/cgi/php.ini] 讀取配置,也可以從 Web 根目錄讀取配置,我必須在包裝器腳本中定義它,以便它讀取那裡的 php.ini

[/var/www/php-fcgi-scripts/johnny/php-fcgi-starter]

#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -c /var/www/johnny/public_html

我綜合了兩個網路教學來讓 FastCGI + VirtualHost 運作起來,並且一直在零碎地學習它是如何運作的。這是我的虛擬主機設定:

[/etc/apache2/sites-available/johnny.conf]

<VirtualHost _default_:80>
  ServerName johnny.10.128.0.2.xip.io
  ServerAlias my.dev.server.public.IP
  DocumentRoot /var/www/johnny/public_html/

  <IfModule mod_fcgid.c>
    SuexecUserGroup johnny johnny
    <Directory /var/www/johnny/public_html/>
      Options +ExecCGI -Indexes +FollowSymLinks +MultiViews
      AllowOverride All
      AddHandler fcgid-script .php .htm .html
      FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .php
      FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .htm
      FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .html
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

  ErrorLog /var/log/apache2/johnny-error.log
  CustomLog /var/log/apache2/johnny-access.log combined
  LogLevel warn
  ServerSignature Off
</VirtualHost>

但它不會從 [/var/www/johnny/public_html/NEW/php.ini] 載入任何內容

檢查這個貼箱看看我對此伺服器所做的一切...我必須重新配置其中一些內容以反映我後來所做的故障排除,所以我希望我沒有錯過任何東西。我還沒有嘗試從頭開始運行這個列表(還......)。我也不確定是否有任何重要的行要附加,因為我今天已經工作了一段時間,主要是編輯然後恢復文件。

答案1

我想我明白了。

我重新開始,逐步瀏覽了 Pastebin 的每一行,只使用 PHP 的必要部分作為 FastCGI,並研究了每個小部分的工作原理。然後我嘗試了很多失敗的事情,然後只剩下可以嘗試的事情,也許這不是“正確的方法”,但是...

建立一個新<Directory>區塊/etc/apache2/sites-available/johnny.conf並複製指令,但進行一些更改

<Directory /var/www/johnny/public_html/new>
  Options +ExecCGI -Indexes +FollowSymLinks +MultiViews
  AllowOverride All
  AddHandler fcgid-script .php .htm .html
  FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .php
  FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .htm
  FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .html
  Order allow,deny
  Allow from all
</Directory>

然後,建立一個單獨的 fcgi 啟動腳本/var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new

#!/bin/sh
#PHPRC=/var/www/johnny/new
#export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -c /var/www/johnny/public_html/new

我發現PHPRC=在這種情況下不起作用,但 -c 參數可以!就是這樣。這是一個 PITA,但它對於我的目的來說已經足夠好了。

相關內容