![如何让 Linux 服务器在共享环境中使用本地 PHP.ini?](https://linux22.com/image/494683/%E5%A6%82%E4%BD%95%E8%AE%A9%20Linux%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9C%A8%E5%85%B1%E4%BA%AB%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%9C%AC%E5%9C%B0%20PHP.ini%EF%BC%9F.png)
我处于共享服务器环境中(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_buffering
、post_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 的域的目录中