nat*_*ral 4 php linux apache xdebug
最近,我在ubuntu 16.04机器上安装了lamp和php-xdebug。我发现现在有以下文件
/etc/php/7.0/apache2/conf.d/20-xdebug.ini
/etc/php/7.0/cli/conf.d/20-xdebug.ini
/etc/php/7.0/mods-available/xdebug.ini
Run Code Online (Sandbox Code Playgroud)
我在徘徊这些文件和设置之间的区别是什么 /etc/php/7.0/apache2/php.ini
受到这些影响。
此外,根据最佳做法,应使用以下哪个文件?
如果在这些文件中使用不同的值重复配置,则优先?
例如,如果xdebug.remote_port = 9000
在中/etc/php/7.0/apache2/php.ini
和中/etc/php/7.0/mods-available/xdebug.ini
设置了xdebug.remote_port = 9001
,则将选择哪个值?
Ubuntu基于Debian。Debian及其衍生版本使用某种独特的方式来管理php和apache的扩展。
在列出的文件中:
/etc/php/7.0/apache2/conf.d/20-xdebug.ini是/etc/php/7.0/mods-available/xdebug.ini的符号链接
/etc/php/7.0/cli/conf.d/20-xdebug.ini也是/etc/php/7.0/mods-available/xdebug.ini的符号链接
命令phpenmod
和phpdismod
可用确实启用或禁用PHP模块。这些就像a2enmod
apache一样,您可以在这里阅读有关内容。例如,使用关闭XDebug sudo phpdismod xdebug
。用打开sudo phpenmod xdebug
。当您打开和关闭配置时,您的配置将被保留,因为您的更改始终保存在中mods-available
,尽管PHP不在该目录中进行配置。实际上,当您使用来“禁用”模块时phpdismod
,它只是从相应的文件夹中删除了符号链接,因此在php配置中未启用该模块。
最后,/etc/php/7.0/apache2/php.ini
是系统范围配置的位置,该位置不是可以启用或禁用的模块。
这样,您的配置更改就xdebug.remote_port = 9000
应该进入,/etc/php/7.0/mods-available/xdebug.ini
因为它与XDebug有关。将其放在两个位置不是一个好主意(因为它会造成混乱),但是最后一个加载优先。这就是为什么mods-available目录中的许多文件在文件名中都有数字的原因-因此它们将以正确的顺序加载。
使用此phpinfo()
函数可获得有关加载了哪些配置值以及从中加载了哪些ini文件的更多信息。例如:
$ php -r "phpinfo();"
Run Code Online (Sandbox Code Playgroud)
要么
$ php -r "phpinfo();" | grep xdebug
Run Code Online (Sandbox Code Playgroud)