5

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

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

1 回答 1

9

首先,您需要知道有不同的方式可以配置您的网络服务器以使用 PHP。我个人有使用 mod_php 和 FastCGI 的经验,所以我可以简要介绍一下这两个。这些被称为处理程序,它们极大地影响了您如何配置 PHP。

mod_php

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

快速CGI

在这种情况下,php.ini每次请求到达时都会加载文件。所以如果你改变了 PHP 的配置,你不需要重启 Apache。然而,您不能在文件中设置主要的 PHP 指令,例如和zend_extension,它们需要在文件中设置。这是因为在应用时,PHP 扩展已经列出并加载,更改这些指令将无效(也不会导致错误)。但好消息是,在这种模式下,您可以在文件中使用。因此,您可以指向一个确实会加载 xdebug 的自定义文件。extension.htaccessphp.ini.htaccessSetEnv PHPRC.htaccessphp.ini

还有另一种方法可以加载用户特定的php.ini文件。但我还没有测试它,所以我不能评论它对你的情况是否有用。也许你可以自己看看。但是页面中提到它也只能在 CGI / FastCGI 中工作。

底线

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

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

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

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

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

php_value xdebug.profiler_enable 1

[更新]

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

在的输出中查找服务器 API 。phpinfo如果它Apache 2.0 Handler在 FastCGI 中读取它是 mod_php,它将读取CGI/FastCGI.

于 2013-07-18T15:41:17.680 回答