Fastcgi
如何讓 linux 伺服器在共享環境中使用本地 PHP.ini?
我在共享伺服器環境中(Dreamhost.com 使用 Linux/Debian)。
我按照他們的說明在我的使用者帳戶上設置本地 PHP5 實例,以便我可以使用 APC(php5 加速器)
需要注意的是,我沒有按照指令/安裝腳本的假設在根目錄“/home/php5”上安裝 php5。
相反,我將它放在另一個目錄“home/subdir-path/php5”中,所以我不得不更改腳本來解決這個問題。
我嘗試將此目錄添加到 env $PATH
但是當我執行 phpinfo() 時,我發現它沒有使用本地 php.ini 設置 =[
非常感謝任何有關如何解決此問題的想法。
==或==
如果有人可以向我展示使用 fastcgi 和 APC(php 記憶體/加速器)設置自定義 php5 實例的正確步驟,那就太好了。
我以前從未與 DreamHost 合作過,但查看您引用的 wiki 頁面並考慮到第 4 步中php-update.php腳本的版本差異(0.1.4 與 0.1.7),看來他們需要您輸入您在
$inimodifications
第 73 行找到的數組中進行了必要的 INI 更改。// Modifications to be made to the ini file after it is updated // - If you need to change these then you can do so here, then // delete your target ini files and run the script again $inimodifications = array( 'output_buffering = 0', 'post_max_size = 100M', 'upload_max_filesize = 100M' );
考慮到
output_buffering
,post_max_size
&upload_max_filesize
是 php.ini 文件中的所有選項,我將首先嘗試按照他們的範例添加您需要更改到此數組的必要行,然後再試一次。
修改步驟 4 中的說明,如下所示:
touch ~/subdir-path/php5/php-update.php
並將腳本的這一部分更改為包含“subdir-path”(此腳本將是 touch 命令引用的腳本,應包含說明中列出的完整腳本):
// Determine the version of PHP to update (4 or 5) based on the directory $directories = explode('/', dirname(__FILE__)); $directories = array_reverse($directories); $directory = $directories[0]; switch ($directory) { case 'php': $php = 'php'; break; case 'php5': default: $php = 'php5'; break; } // The full paths to the source cgi and ini $sourcecgi = '/dh/cgi-system/' . $php . '.cgi'; $sourceini = '/etc/' . $php . '/cgi/php.ini'; // Get the HOME environment variable $home = $_SERVER['HOME']; // The full paths to the target cgi and ini $targetcgi = $home . '/' . 'subdir-path' . $php . '/' . $php . '.cgi'; $targetini = $home . '/' . 'subdir-path' . $php . '/php.ini';
此外,在第 8 步中,確保將這些別名設置為自定義目錄,例如:
cd ~/example.com ln -s ~/subdir-path/php5 .
您可能還需要修改 .htaccess 文件中的路徑名。