如何覆盖一些PHP的默认configuration?

让我们说,我已经在Ubuntu中安装了PHP 5.5.x,它带有一个默认的configuration。 我想覆盖一些configuration,但我不想(这是我知道这是可能的):

  • 编辑默认的php.ini文件
  • 在每个.php文件中使用一个PHP块来覆盖它们
  • 使用.htaccess文件和指令

我想用下面的行创build一个名为custom-php.ini的文件(例如):

 ; Basic configuration override expose_php = Off memory_limit = 512M post_max_size = 128M upload_max_filesize = 128M date.timezone = UTC max_execution_time = 120 ; Error reporting display_errors = stderr display_startup_errors = Off error_reporting = E_ALL ; A bit of performance tuning realpath_cache_size = 128k ; OpCache tuning opcache.max_accelerated_files = 32000 ; Temporarily disable using HUGE PAGES by OpCache. ; This should improve performance, but requires appropriate OS configuration ; and for now it often results with some weird PHP warning: ; PHP Warning: Zend OPcache huge_code_pages: madvise(HUGEPAGE) failed: Invalid argument (22) in Unknown on line 0 opcache.huge_code_pages=0 ; Xdebug [Xdebug] xdebug.remote_enable = true xdebug.remote_host = "192.168.3.1" // this IP should be the host IP xdebug.remote_port = "9001" xdebug.idekey = "XDEBUG_PHPSTORM" 

有没有什么地方可以写这个文件,并且默认的PHP值会被custom-php.ini值覆盖?

是的,应该是可能的。 首先,在您的文档根目录中创建一个名为info.php的PHP文件,并在其中放置<?php phpinfo() ?> 。 然后从浏览器调用它,并寻找Scan this dir for additional .ini files 。 在Ubuntu上它可能是像/etc/php5/apache2/conf.d

在这个目录下,你可以把你自己的自定义的ini文件(叫做99.overrides.php.ini ),这样它最后被解析。

在那个文件中,把你想要的任何额外的配置,重新启动Apache或Web服务器,更改将生效。

如果你没有使用Apache,并且你正在使用CGI / FastCGI SAPI,你可以使用.user.ini文件如下:

 upload_max_filesize = "300M" post_max_size = "100M" 

另外有趣的是: https : //www.howtoforge.com/how-to-specify-a-custom-php.ini-for-a-website-apache2-with-mod_php

显然你可以通过PHPINIDir指令设置一个自定义的php.ini文件。 您也可以指定每个虚拟主机。

<VirtualHost 1.2.3.4:80> [...] PHPINIDir /var/www/web1 [...] </VirtualHost>

只为Apache而已。