如何在生产和开发中管理不同的php.ini设置?

时间:2012-01-22 17:21:44

标签: php apache .htaccess configuration

管理从开发到生产的php.ini配置是否有最佳实践?显然它可以手动完成,但这很容易出现人为错误。我想尝试在版本控制中生成生产文件,然后可能自动修改开发版本。 我有过的想法或想法,如果可行,我不知道:

  1. php.ini包括 - 只包括最后的开发设置 文件?
  2. 来自apache conf的条件加载?
  3. 编写一个脚本,当php.ini发生变化时,会生成一个动态版本的phpdev.ini - (我知道这可以做到)
  4. 使用运行时php设置显示错误 - 我认为这有局限性,因为如果脚本有致命错误,那么它就不会运行运行时设置。
  5. 备份计划 - 将生产版本保留在SC中,然后手动更改 根据需要根据需要使用phpdev.ini。然后,如果出现手动错误 它们是在开发层面完成的。

2 个答案:

答案 0 :(得分:1)

  1. 将您的ini存储在源代码存储库中以其环境命名的不同目录:environments / {dev,qa,staging,prod} /php.ini
  2. 在每个环境中,执行以下操作:rm /etc/php.ini; ln -s /var/www/site/environments/prod/php.ini /etc/php.ini
  3. 这样,您可以获得版本控制的好处,而不必手动编辑每个版本。

答案 1 :(得分:0)

我不确切地知道这是否是您正在寻找的,但我个人喜欢通过apache虚拟主机设置执行所有非安全性必要的php.ini修改,例如:开发虚拟主机:

    ServerName sb.local
    ServerAlias sb.local
    DocumentRoot /srv/some-site

    php_value session.cookie_domain "sb.local"
php_value date.timezone "America/New_York"
php_value mbstring.func_overload 7
php_value default_charset "utf-8"
AddDefaultCharset utf-8 

php_value session.gc_maxlifetime "990000"
php_value error_reporting 30711
# 30711 = E_ALL ^ E_NOTICE
php_value display_errors "On"
php_value display_startup_errors "On"
php_value log_errors "On"
php_value html_errors "On"