如何让 Linux 服务器在共享环境中使用本地 PHP.ini?

如何让 Linux 服务器在共享环境中使用本地 PHP.ini?

我处于共享服务器环境中(Dreamhost.com 使用 Linux/Debian)。

我按照他们的指示这里在我的用户帐户上设置本地 PHP5 实例,以便我可以使用 APC(php5 加速器)

需要注意的一点是,我没有按照说明/安装脚本所假设的那样在根目录“/home/php5”上安装 php5。

相反,我将它放在另一个目录“home/subdir-path/php5”中,所以我不得不更改脚本来解决这个问题。

我尝试将此目录添加到环境 $PATH

但是当我执行 phpinfo() 时,我发现它没有使用本地 php.ini 设置 =[

任何关于如何解决这一问题的想法都将不胜感激。

==或==

如果有人可以向我展示设置自定义 php5 实例的正确步骤,使用 fastcgi 和 APC(php 缓存/加速器),那就太好了。

答案1

我以前从未使用过 DreamHost,但查看您引用的 wiki 页面,并考虑到php-更新.php脚本(0.1.4 与 0.1.7)在步骤 4 中,似乎它们要求您将必要的 INI 更改放入$inimodifications第 73 行的数组中。

// 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_bufferingpost_max_size&upload_max_filesize都是在 php.ini 文件中找到的所有选项,我将首先尝试按照它们的示例将需要更改的必要行添加到此数组中,然后重试。

答案2

将步骤 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 文件中的路径名。

答案3

为此,我必须创建一个 fcgi 包装器。

你可以随意命名

触摸 php5-mywrapper.fcgi

使其可执行

chmod + x php5-mywrapper.fcgi

写入文件 =]

pico php5-mywrapper.fcgi

    #!/bin/sh
    export PHP_FCGI_CHILDREN = 3
    exec cgi-bin/php5.fcgi -c path/to/php-ini-dir/

然后我在 .htaccess 文件中添加了适当的处理程序,并将 .htaccess 文件放在使用 fcgi 的域的目录中

相关内容