我有一个只能在ini文件中更改的php设置。 由于冲突,我无法在全局php.ini中更改此设置,所以我需要具有此用户特定的。 如果php作为模块运行,可以这样做吗? 或者我必须更改PHP运行为CGI?
似乎最好的答案是“不是真的”,但你可以偷偷改变一些参数使用下面的技巧。
当使用PHP作为Apache模块时,我不知道有什么方法可以指定一个单独的php.ini,只有当使用PHP作为CGI时。 也就是说,php.ini中的任何configuration选项都可以在.htaccess文件中更改,如http://php.net/configuration.changes中所示,只要您将Apacheconfiguration中的AllowOverride设置为Options或All 。
我已经在我的许多网站上做了这个改变常见的PHPconfiguration。 我会假设你不需要改变每一个设置,所以通过在需要修改的目录中添加选项到你的.htaccess文件,可以很容易地pipe理这个数字。
以下是我在一对夫妇的网站上用来更改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>
我重写了PHP的CGI封装处理程序,并能够指定一个php.ini文件
要做到这一点:在你想修改的文件夹中创build一个htaccess文件,如下所示:
Action php5-cgi /cgi-bin/php5-cgi.cgi AddHandler php5-cgi .php
然后用这样的东西创build一个文件'php5-cgi.cgi':
#!/bin/sh exec /usr/bin/php-cgi "$@" -c "/home/user/php.ini"
设置权限在这个文件作为“用户”执行。 然后用phpinfo(1)运行一个testing文件; 看看你有没有加载你的ini文件。
感谢大家的帮助!
所有的细节在这里: http : //php.net/configuration.changes
基本上没有。
从PHP手册 :
PHP启动时读取configuration文件(php.ini)。 对于PHP的服务器模块版本,这仅在Web服务器启动时发生一次。 对于CGI和CLI版本,它发生在每个调用。
您可以使用每个虚拟主机/用户的Apache“php_admin_value”。
IIRC,你可以使用这个命令重新定义每个php.ini的值