.htaccess htaccess custom php.ini vs php_值或php_标志
我想为我的项目设置.htaccess htaccess custom php.ini vs php_值或php_标志,.htaccess,php-ini,.htaccess,Php Ini,我想为我的项目设置xdebugphp扩展。我有一个linux环境,还有其他人在同一台服务器上工作。我想通过.htaccess文件中的自定义php.ini文件设置来实现这一点。我对此有一些疑问: 我的自定义php.ini文件是否必须是原始php.ini文件的副本,以便只修改我需要的内容?或者在该文件中只包含我要更改的设置就足够了 正如我所做的实验,在.htaccess文件中,设置SetEnv PHPRC/path/to/my/custom/phpinifile高于所有其他设置是很好的。那么SetE
xdebug
php扩展。我有一个linux环境,还有其他人在同一台服务器上工作。我想通过.htaccess
文件中的自定义php.ini
文件设置来实现这一点。我对此有一些疑问:
php.ini
文件是否必须是原始php.ini
文件的副本,以便只修改我需要的内容?或者在该文件中只包含我要更改的设置就足够了.htaccess
文件中,设置SetEnv PHPRC/path/to/my/custom/phpinifile
高于所有其他设置是很好的。那么SetEnv
下面的手动设置php\u值
或php\u标志
呢?他们会覆盖我的php.ini
文件设置吗首先,您需要知道可以通过不同的方式配置Web服务器以使用PHP。就我个人而言,我对mod_php和FastCGI很有经验,因此我可以向您简要介绍这两个方面。这些被称为处理程序,它们极大地影响了您如何配置PHP mod_php 如果您已将PHP作为Apache的一个模块安装,则在Apache启动时将读取
PHP.ini
文件。在这种情况下,所有主要的PHP指令,如zend_extension
和extension
都将在Apache启动时应用,因此它们不能在.htaccess
文件中设置。根据我的经验,.htaccess
中的SetEnv PHPRC
也不起作用
FastCGI
在这种情况下,每次请求到达时都会加载php.ini
文件。因此,如果更改PHP的配置,则不需要重新启动Apache。但是,您不能在.htaccess
文件中设置主要的PHP指令,如zend_extension
和extension
,它们需要在PHP.ini
文件中设置。这是因为当应用.htaccess
时,已经列出并加载了PHP扩展,更改这些指令将无效(也不会导致错误)。但好消息是,在这种模式下,您可以在.htaccess
文件中使用SetEnv PHPRC
。因此,您可以指向一个定制的php.ini
文件,该文件将加载xdebug
您还可以加载特定于用户的php.ini
文件。但是我还没有测试过它,所以我不能评论它对你的情况是否有用。也许你可以自己看看。但是在页面中提到,它也只能在CGI/FastCGI中工作
底线
如果您使用的是mod_php,那么您别无选择,只能修改原始的php.ini
来加载xdebug。但您可以为每个虚拟主机启用它,将enable命令放入相应的.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
[更新]
如何检查您的服务器是否在mod_PHP或FastCGI中运行PHP:
在
phpinfo
的输出中查找服务器API。如果它读取Apache2.0处理程序
它是mod\uPHP,而在FastCGI中它将读取CGI/FastCGI
为什么需要自定义php.ini
文件?我认为在大多数情况下,使用.htaccess
编写的全局配置应该足够了。问题是,我在一台服务器上工作,而其他许多服务器也可以工作。我不想干扰他们的项目。你知道你可以在服务器中拥有你想要的任意多个.htaccess
?您的项目不是驻留在它自己的子文件夹中吗?然后,您可以在项目的子文件夹中有一个特定的.htaccess
,它不会与任何其他项目的配置冲突。我看不出有哪种情况是这样的!我说的不是.htaccess
文件,而是在主php.ini
文件中设置xdebug
。这是不可接受的。@Mehran,.htaccess有许多限制。有些设置只能由php.ini更改。我想你已经有了一个完整的答案,所以我不想就此作答。也许你可以补充一点,他可以使用这个函数创建多个环境,这样就可以更容易地向项目中添加特定的配置。但是它当然不能用于添加像xdebug这样的新模块,因为您将需要一个/etc/init.d/apache2重新启动命令。谢谢,但是我看不出getEnv
如何适合这张图片!就我个人而言,我使用getEnv
将参数作为一些配置传递给我的代码,但我不知道如何使用它来加载扩展(正如您自己所说)。所以我不确定这是否与此相关。无论如何,谢谢。事实上,它无法加载扩展,但您可以在bootsrap文件中使用ini_set设置一些.ini值。我认为这太过分了,因为您可以在.htaccess
中设置任何ini指令,而不是将它们设置为环境变量并在引导中读取。就我个人而言,我使用环境变量只有一个目的;这告诉代码应该使用应用程序配置的哪个部分(比如开发或