php - 如何为每个虚拟主机创建自定义 php.ini 文件?

标签 php apache easyphp

我安装了 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/

相关文章:

python - 始终无法通过重新启动 '' 重新启动 docker 容器''

PHP PDO 扩展不可用是命令行

更新 EasyPHP 后 PHPMyAdmin 错误

php - 识别可疑登录的可靠方法有哪些?

php - 从 mysql 表获取结果,同时匹配另一个表的结果

php - 如何为数据库中的每一秒数据(图片)更改 css 样式?

java - HttpClient 在执行第二个请求时挂起

php - mysql 查找日期之间的记录

php - GWT 前端(托管模式)和 PHP 后端(apache)同时在本地主机上?

php - 使用 EasyPHP 时出现 PEAR "DB.php"错误