我想为我的项目设置xdebug
php扩展。我有一个linux环境,还有其他人在同一台服务器上工作。我想通过php.ini
文件中的自定义.htaccess
文件设置来完成此操作。我对此有一些疑问:
php.ini
文件是否必须是原始php.ini
文件的副本才能仅修改我需要的内容?或者仅仅在该文件中包含我想要更改的设置就足够了?SetEnv PHPRC /path/to/my/custom/phpinifile
设置置于.htaccess
文件中的所有其他设置之上是一件好事。 php_value
下面的手动设置php_flag
或SetEnv
怎么样?他们会覆盖我的php.ini
文件设置吗?答案 0 :(得分:9)
首先,您需要知道可以使用不同的方式配置Web服务器以使用PHP。我个人经历过mod_php和FastCGI,所以我可以向你介绍这两个。这些被称为处理程序,它们会极大地影响您如何配置PHP。
<强> mod_php的强>
如果您已将PHP安装为Apache模块,则在Apache启动时会读取php.ini
文件。在这种情况下,所有主要的PHP指令(如zend_extension
和extension
)将在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
。