我安装了 EasyPHP WAMP 仅用于本地开发(我没有托管任何网站)。
有没有办法为单独的虚拟主机设置自定义 php 设置?
目前开箱即用,php.ini
文件加载自:C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\binaries\php\php_runningversion\php.ini
如果我可以将自定义 php.ini
文件放入虚拟主机目录以覆盖原始 中的设置,那就太好了php.ini
这样,我可以更好地模拟每个站点的生产服务器环境。
我已经看到它与在线托管帐户一起使用。但我不知道如何在我的机器上进行这项工作。
最佳答案
使用自定义 php.ini
files 对于基于 CGI/FastCGI 的 PHP 安装来说非常简单,但是当 PHP 作为 Apache 模块 (mod_php) 运行时它不可行,因为整个服务器运行 PHP 解释器的单个实例。
我的建议:
从 PHP 本身设置尽可能多的设置:
ini_set('memory_limit', '16M'); date_default_timezone_set('Europe/Madrid') ...
换句话说,可以在运行时更改的指令。
从每个目录的 Apache 设置文件(又名
.htaccess
)设置其余内容:php_flag short_open_tag off php_value post_max_size 50M php_value upload_max_filesize 50M
即在脚本开始运行之前需要定义的设置
请看Runtime Configuration了解更多详情。
有时,您在开发和生产中实际上需要不同设置。有无数种方法可以用 PHP 代码解决这个问题(从从 $_SERVER['HTTP_HOST']
变量创建一个 bool 常量到只拥有一个具有不同值的 config.php
文件),但使用 .htaccess
就比较棘手了。 .我通常使用 <IfDefine>
directive :
<IfDefine DEV-BOX>
#
# Local server directives
#
SetEnv DEVELOPMENT "1"
php_flag display_startup_errors on
php_flag display_errors on
php_flag log_errors off
#php_value error_log ...
</IfDefine>
<IfDefine !DEV-BOX>
#
# Internet server directives
#
php_flag display_startup_errors off
php_flag display_errors off
php_flag log_errors on
php_value error_log "/home/foo/log/php-error.log"
</IfDefine>
... 其中 DEV-BOX
是我传递给本地 Apache 命令行的字符串:
C:\Apache24\bin\httpd.exe -D DEV-BOX
如果您将 Apache 作为服务运行,-D DEV-BOX
可以在 Windows 注册表中添加位,例如:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Apache2.4\Parameters\ConfigArgs
相关:Find out how PHP is running on server (CGI OR fastCGI OR mod_php)
关于php - 如何为每个虚拟主机创建自定义 php.ini 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22309620/