Fastcgi

如何讓 linux 伺服器在共享環境中使用本地 PHP.ini?

  • October 6, 2009

我在共享伺服器環境中(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 文件中的路徑名。

引用自:https://serverfault.com/questions/69150