Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何覆盖一些PHP默认配置?_Php_Linux_Configuration_Php 5.5 - Fatal编程技术网

如何覆盖一些PHP默认配置?

如何覆盖一些PHP默认配置?,php,linux,configuration,php-5.5,Php,Linux,Configuration,Php 5.5,假设我已经在Ubuntu中安装了PHP5.5.x,它带有一个默认配置。我想覆盖一些配置,但我不想覆盖(这就是我如何知道这是可能的): 编辑默认的php.ini文件 在每个.PHP文件中使用PHP块覆盖它们 使用.htaccess文件和指令 我想创建一个名为custom php.ini的文件,其中包含以下行(作为示例): 是否有任何地方可以编写此文件,并且默认PHP值会被custom PHP.ini上的值覆盖 如果您不使用Apache,而使用的是CGI/FastCGI SAPI,则可以使用如下

假设我已经在Ubuntu中安装了PHP5.5.x,它带有一个默认配置。我想覆盖一些配置,但我不想覆盖(这就是我如何知道这是可能的):

  • 编辑默认的
    php.ini
    文件
  • 在每个
    .PHP
    文件中使用PHP块覆盖它们
  • 使用
    .htaccess
    文件和指令
我想创建一个名为
custom php.ini
的文件,其中包含以下行(作为示例):


是否有任何地方可以编写此文件,并且默认PHP值会被
custom PHP.ini
上的值覆盖

如果您不使用Apache,而使用的是CGI/FastCGI SAPI,则可以使用如下文件:

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

是的,应该是可能的。首先,在文档根目录中创建一个名为
info.PHP
的PHP文件,并将
放入其中。然后从浏览器中调用它并查找
扫描此目录以查找其他.ini文件
。在Ubuntu上,它可能类似于
/etc/php5/apache2/conf.d

在该目录中,您可以放置自己的自定义ini文件(称之为
99.overrides.php.ini
),以便最后对其进行解析

在该文件中,放入您想要的任何附加配置,重新启动Apache或web服务器,更改将生效。

另一个有趣的是:

显然,您可以通过
PHPINIDir
指令设置自定义php.ini文件。您还可以为每个虚拟主机指定该值


[...]
PHPINIDir/var/www/web1
[...]


不过,这只适用于Apache

我附近没有Ubuntu机器可以检查,但是不是有类似
/etc/php/conf.d
的东西吗?您应该能够在其中放置一个部分配置,它将覆盖主配置文件。不需要ini_set(),是吗?这里的答案是:@Daniel正如我在OP上所说的那样,我不想在每个.PHP文件中使用PHP块来覆盖它们,这意味着我不想使用
ini_set()
@Daniel,我认为
ini_set()
是一种代码气味。它几乎不应该被使用。PHP允许在太多的地方进行配置……从OP开始,在最初的问题中:“我不想……使用
.htaccess
文件和指令”。他说他知道该方法,但不是说他不想使用该方法。我已经设置了我的答案,从上到下列出了常用方法和我的经验中最好的方法。我的评论中直接引用了OP:“我不想……使用
.htaccess
文件和指令”。我很确定OP不需要这种解决方案。请注意,
Scan this dir for additional.ini文件
值只有在使用
--with config file Scan dir
参数编译PHP时才会设置。如果它说的是类似于
(none)
,那么为了使用这个特性,您必须使用更正选项重新编译PHP。这让我抓狂。我在conf.d目录中添加了一个文件,并根据phpinfo()对其进行了解析,但我的内存限制值仍然是主值。我在自定义ini文件中使用了[PATH=/var/www/mysite]指令。你知道为什么这没有效果吗?
upload_max_filesize     = "300M" 
post_max_size           = "100M"