我有一个 php 设置只能在 ini 文件中更改。由于冲突,我无法在全局 php.ini 中更改此设置,因此我需要将此设置设置为特定于用户。如果 php 作为模块运行,可以这样做吗?还是我必须将 php 更改为作为 cgi 运行?
似乎最好的答案是“并非如此”,但您可以使用下面的技巧偷偷更改一些参数。
答案1
我不知道在使用 PHP 作为 Apache 模块时如何指定单独的 php.ini,只有在使用 PHP 作为 CGI 时才可以。也就是说,php.ini 中的任何配置选项都可以在文件中更改,.htaccess
如下所示http://php.net/configuration.changes只要您在 Apache 配置中将 AllowOverride 设置为Options
或All
。
我已在我的许多网站上这样做过,以更改常见的 PHP 配置。我认为您不需要更改每个设置,因此只需将选项添加到.htaccess
您需要更改的目录中的文件即可轻松管理数量。
以下是我在几个网站上使用的更改include_path
以及设置auto_prepend_file
和auto_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 值