htaccess自定义php.ini vs php_value或php_flag

时间:2013-06-24 07:52:20

标签: .htaccess php-ini

我想为我的项目设置xdebug php扩展。我有一个linux环境,还有其他人在同一台服务器上工作。我想通过php.ini文件中的自定义.htaccess文件设置来完成此操作。我对此有一些疑问:

  1. 我的自定义php.ini文件是否必须是原始php.ini文件的副本才能仅修改我需要的内容?或者仅仅在该文件中包含我想要更改的设置就足够了?
  2. 正如我已经尝试过的,将SetEnv PHPRC /path/to/my/custom/phpinifile设置置于.htaccess文件中的所有其他设置之上是一件好事。 php_value下面的手动设置php_flagSetEnv怎么样?他们会覆盖我的php.ini文件设置吗?

1 个答案:

答案 0 :(得分:9)

首先,您需要知道可以使用不同的方式配置Web服务器以使用PHP。我个人经历过mod_php和FastCGI,所以我可以向你介绍这两个。这些被称为处理程序,它们会极大地影响您如何配置PHP。

<强> mod_php的

如果您已将PHP安装为Apache模块,则在Apache启动时会读取php.ini文件。在这种情况下,所有主要的PHP指令(如zend_extensionextension)将在Apache启动时应用,因此无法在.htaccess文件中设置。根据我的经验,SetEnv PHPRC中的.htaccess也不起作用。

<强>的FastCGI

在这种情况下,每次请求到达时都会加载php.ini文件。因此,如果您更改PHP的配置,则无需重新启动Apache。但是,您无法在zend_extension文件中设置extension.htaccess等主要PHP指令,并且需要在php.ini文件中设置它们。这是因为当应用.htaccess时,已经列出并加载了PHP扩展,并且更改这些指令将不起作用(它也不会导致错误)。但好消息是,在此模式下,您可以在SetEnv PHPRC文件中使用.htaccess。因此,您可以指向一个自定义php.ini文件,该文件将加载xdebug。

您可以another way加载用户特定的php.ini文件。但是我还没有测试过,所以我不能评论它对你的情况有用。也许你可以自己看一下。但是在页面中提到它也只适用于CGI / FastCGI。

底线

如果您使用mod_php,则别无选择,只能修改原始php.ini以加载xdebug。但您可以为每个虚拟主机启用它,将启用命令放在适当的.htaccess文件中。

如果您使用的是FastCGI,则可以在原始php.ini中加载xdebug,也可以拥有自己的php.ini文件并在.htaccess文件中指向该文件(但无论如何都是xdebug)加载到php.ini文件中。但是,如果您使用的是后一种情况,则原始的php.ini将不会被应用。因此,您需要在自己的php.ini文件版本中提及您想要的任何指令。您可以再次为.htaccess个文件中的每个虚拟主机打开/关闭xdebug。

无论您选择哪种解决方案,都需要在php.ini文件中输入此内容以加载xdebug:

zend_extension = /path/to/your/xdebug.so

虚拟主机.htaccess中的这个启用调试:

php_value xdebug.profiler_enable 1

<强> [UPDATE]

如何检查服务器是否在mod_php或FastCGI中运行PHP:

phpinfo的输出中查找服务器API 。如果它在FastCGI中显示Apache 2.0 Handler它的mod_php,则会显示CGI/FastCGI