我有一個只能在 ini 文件中更改的 php 設定。由於衝突,我無法在全域 php.ini 中更改此設置,因此我需要指定此用戶。如果php作為模組運行可以做到這一點嗎?或者我必須將 php run 作為 cgi 更改嗎?
似乎最好的答案是“並非如此”,但您可以使用以下技巧偷偷更改一些參數。
答案1
我不知道在使用 PHP 作為 Apache 模組時,只有在使用 PHP 作為 CGI 時,有什麼方法可以指定單獨的 php.ini 。也就是說,可以在檔案中更改 php.ini 中的任何配置選項,.htaccess
如下所示http://php.net/configuration.changes只要您將 Apache 配置中的 AllowOverride 設為Options
或All
。
我在許多網站上都這樣做過,以更改常見的 PHP 配置。我假設您不需要更改每個設置,因此應該通過將選項添加到.htaccess
需要更改的目錄中的文件來輕鬆管理該數字。
以下是我在幾個網站上使用的一個來更改include_path
和設定auto_prepend_file
的auto_append_file
設定。對於布林標誌項,只需使用php_flag
而不是php_value
.
<IfModule mod_php5.c>
php_value auto_prepend_file 'header.inc.php'
php_value auto_append_file 'footer.inc.php'
php_value include_path '/path/to/private/includes:/usr/share/pear'
</IfModule>
答案2
我覆蓋了 php cgi 包裝器的 php 處理程序,並且能夠指定 php.ini 文件
為此:在您要修改的資料夾中建立一個 htaccess 文件,如下所示:
Action php5-cgi /cgi-bin/php5-cgi.cgi
AddHandler php5-cgi .php
然後建立一個檔案“php5-cgi.cgi”,內容如下:
#!/bin/sh
exec /usr/bin/php-cgi "$@" -c "/home/user/php.ini"
設定此檔案的權限以「使用者」身分執行。然後使用 phpinfo(1) 運行測試檔;查看是否已載入 ini 檔案。
謝謝大家的幫忙!
答案3
所有詳細資訊都在這裡:http://php.net/configuration.changes
答案4
您可以為每個虛擬主機/使用者使用 Apache“php_admin_value”。
IIRC,您可以使用此命令重新定義每個 php.ini 值