用户特定的 Php.ini 当 php 作为模块运行时?

用户特定的 Php.ini 当 php 作为模块运行时?

我有一个 php 设置只能在 ini 文件中更改。由于冲突,我无法在全局 php.ini 中更改此设置,因此我需要将此设置设置为特定于用户。如果 php 作为模块运行,可以这样做吗?还是我必须将 php 更改为作为 cgi 运行?

似乎最好的答案是“并非如此”,但您可以使用下面的技巧偷偷更改一些参数。

答案1

我不知道在使用 PHP 作为 Apache 模块时如何指定单独的 php.ini,只有在使用 PHP 作为 CGI 时才可以。也就是说,php.ini 中的任何配置选项都可以在文件中更改,.htaccess如下所示http://php.net/configuration.changes只要您在 Apache 配置中将 AllowOverride 设置为OptionsAll

我已在我的许多网站上这样做过,以更改常见的 PHP 配置。我认为您不需要更改每个设置,因此只需将选项添加到.htaccess您需要更改的目录中的文件即可轻松管理数量。

以下是我在几个网站上使用的更改include_path以及设置auto_prepend_fileauto_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

您可以为每个 vhost/user 使用 Apache“php_admin_value”。

IIRC,你可以使用此命令重新定义每个 php.ini 值

相关内容