首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么PHP ini中的php memory_limit指令被忽略?

PHP的memory_limit指令在php.ini文件中设置,用于控制脚本所允许使用的最大内存量。如果你发现这个指令被忽略了,可能是以下几个原因:

1. 配置文件位置错误

确保你编辑的是正确的php.ini文件。PHP可能有多个php.ini文件,特别是在多版本共存的环境中。可以通过运行php --ini命令来查看PHP加载了哪些配置文件。

2. 配置未生效

修改php.ini后,需要重启Web服务器(如Apache或Nginx)或者PHP-FPM服务,以便新的配置生效。

3. 脚本级别的覆盖

在PHP脚本中,可以使用ini_set()函数动态地更改内存限制。如果在脚本中有这样的调用,它会覆盖php.ini中的设置。

代码语言:txt
复制
ini_set('memory_limit', '256M');

4. .htaccess文件中的设置

如果你的服务器配置允许,.htaccess文件也可以用来设置内存限制,这可能会覆盖php.ini中的设置。

代码语言:txt
复制
php_value memory_limit 256M

5. PHP版本问题

不同版本的PHP可能对memory_limit的处理有所不同。确保你的PHP版本与你所参考的文档相匹配。

6. Web服务器配置

Web服务器的配置也可能影响PHP指令的执行。例如,在Nginx中,如果使用了fastcgi_param指令来设置内存限制,它会覆盖php.ini中的设置。

代码语言:txt
复制
fastcgi_param PHP_VALUE "memory_limit=256M";

解决方法

  1. 检查配置文件位置:使用php --ini确定正确的php.ini文件位置。
  2. 重启服务:修改php.ini后,重启Web服务器或PHP-FPM服务。
  3. 检查脚本:查看是否有ini_set()调用覆盖了设置。
  4. 检查.htaccess:如果使用了.htaccess,检查是否有相关的PHP值设置。
  5. 验证配置:使用phpinfo()函数查看当前的内存限制设置,以确认是否正确加载了php.ini中的配置。
  6. 服务器配置:检查Web服务器的配置文件,确保没有冲突的设置。

示例代码

如果你想在脚本中临时设置内存限制,可以使用以下代码:

代码语言:txt
复制
<?php
// 设置内存限制为256M
ini_set('memory_limit', '256M');

// 输出当前内存限制
echo ini_get('memory_limit');
?>

通过以上步骤,你应该能够诊断并解决php memory_limit指令被忽略的问题。如果问题依旧存在,可能需要进一步检查服务器的错误日志或者咨询服务器管理员。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP中的php.ini文件详解 原

; 而php.ini的设置更改可以反映出相当的变化,   ; 在使用新的PHP版本前,研究一下php.ini会有好处的   ;;;;;;;;;;;;;;;;;;;   ; 关于这个文件 ;   ;;;;...;;;;;;;;;;;;;;;   ; 这个文件控制了PHP许多方面的观点.为了让PHP读取这个文件,它必须被命名为   ; 'php.ini'.PHP 将在这些地方依次查找该文件:当前工作目录;环境变量...  ; 该文件的语法非常简单.空白字符和用分号';'开始的行被简单地忽略(就象你可能   ; 猜到的一样). 章节标题(例如 : [Foo])也被简单地忽略,即使将来它们可能   ; 有某种的意义....  ;   ; 值可以是一个字符串,一个数字,一个 PHP 常量 (如: E_ALL or M_PI), INI 常量中的   ; 一个 (On, Off, True, False, Yes, No...  ;   ; INI 文件的表达式被限制于位运算符和括号.   ; | bitwise OR   ; & bitwise AND   ; ~ bitwise NOT   ; !

3.7K10

php+nginx中的php.ini,php-fpm.conf,nginx.conf【php】

一、解释一下 1.php-fpm.conf:是PHP-FPM特有的配置文件,是PHP-FPM进程管理器的配置文件 2.php.ini:是php模式中必须的配置文件, 是PHP解析器的配置文件 3.nginx.conf...4.php-fpm.conf的官方配置说明:https://www.php.net/manual/zh/install.fpm.configuration.php 二、有哪些历程 1.早期的webserver...;request_slowlog_timeout =10s 当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中....我们知道php.ini 里面max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效。...真正能够控制 PHP 脚本最大执行时间的是 php-fpm.conf 配置文件中的request_terminate_timeout参数。 2.php.ini

1.1K10
  • PHP常用配置

    Php配置文件:php.ini(使用‘;’表示注释) Php的配置项可以在配置文件中配置,也可以在脚本中使用ini_set()函数临时配置。...在所有操作系统中(包括Windows),都必须使用斜线(/)作为目录的分隔符。 6. safe_mode_protected_env_vars:此指令保护某些环境变量不能被putenv()函数修改。...本项中声明的所有变量都覆盖 safe_mode_allowed_env_vars指令中声明的变量。...你可以在网上下载php手册,并将docref_root指令指向你本地的手册所在的URL目录中,你还必须设置docref_ext指令来指定文件的扩展名。 注意:不要在发布的站点上使用这个特性。...这些文件就像调用了include()函数被包含进来一样,因此会使用include_path指令的值。 注意:如果脚本通过exit()终止,那么自动后缀将不会发生。

    2.9K41

    php环境无法上传文件的解决方法

    二、 php.ini配置文件 php.ini中影响上传的有以下几处: file_uploads 是否开启 on 必须开启 是否允许HTTP文件上传 post_max_size = 8M PHP接受的POST...要上传大文件,该值必须大于"upload_max_filesize" 如果配置脚本中激活了内存限制,"memory_limit"也会影响文件上传。...在安全模式下,你不能用ini_set()在运行时改变这个设置 max_input_time = 60 每个脚本接收输入数据的最大允许时间(POST, GET, upload), 按秒计 memory_limit...这有助于防止劣质脚本消耗完服务器上的所有内存。 要使用此指令必须在编译的时候激活。...因此 configure 一行中应该包括:--enable-memory-limit 如果不需要任何内存上的限制,必须将其设为 -1 自php4.3.2 起,当设置了memory_limit后,memory_get_usage

    1K10

    composer PHP Fatal error: Allowed memory size of 报错解决

    of 1610612736 bytes exhausted (tried to allocate 32 bytes) 原因是内存不够,这需要到php.ini里配置,在php7.4版本里有效,7.2我走过...,无效,用install命令是可以的,这是windows下的BUG吧 memory_limit = 128M 把128M改成-1,表示不限制 现在把解决方案操作说明公布如下: 1、php版本设置成7.4...,到php.ini里,做以下修改(重点在PHP版本号7.4和内存的修改) memory_limit = 128M // 改为 memory_limit = -1 2、执行命令改变更新源,这里改成阿里的,...的多线程,多线程走,效率更高不是 php composer.phar require hirak/prestissimo 4、执行composer更新的命令,因为在上面多线程命令执行后,已经同时默认执行了...命令的时候,有时候会提示版本问题,不能执行,可以用以下命令,忽略版本号 php composer.phar install --ignore-platform-reqs 以上内容按需要操作,重点php7.4

    77340

    PHP7.0正式版编译安装升级及WordPress问题解决分享

    之前就用过 RC 版本,性能确实提高了很多,但是在 PHP7.0 环境中,Begin 主题存在不少问题,由于不是正式版,我也就懒得花时间去解决了。.../etc/php.ini Mem=`free -m | awk '/Mem:/{print $2}'` if [ $Mem -gt 1024 -a $Mem -le 1500 ];then Memory_limit...*@memory_limit = ${Memory_limit}M@" $php_install_dir/etc/php.ini sed -i 's@^output_buffering =@output_buffering...则以下包含opcache的都请忽略 sed -i 's@^\[opcache\]@[opcache]\nzend_extension=opcache.so@' $php_install_dir/etc/...定位方法很简单,再次开启 PHP 所有错误显示,然后刷新后台评论界面,发现有如下报错: 原来是 preg_replace 函数在 PHP7 中已经弃用了/e 这个参数,改用了 preg_replace_callback

    1.1K70

    zblog显示Allowed memory size of 6553652 bytes exhausted错误的解决办法

    (tried to allocate 36 bytes) in…..其实这个问题,就是内存溢出造成的,至于为什么会出现这样的提示呢?...出错原因: 因为php页面消耗的最大内存默认是为64M (在PHP的php.ini配置文件里可以看到) ,如果文件太大或提交的数据过多,在读取的时候会发生上述提示错误,这是我们只需要在服务器里把php配置文件的默认内存大小修改下即可...,宝塔用户可以直接在php设置中修改。...解决办法 如果是宝塔控制面板,直接找到网站,查看网站适用哪个版本的php,然后在菜单找到软件商店,找到对应的php版本,例如php7.1然后在弹出的对话框,找到“memory_limit”,然后把默认的...如果不是宝塔面板,需要找到服务器的PHP的 php.ini 配置文件,在php.ini中找到“memory_limit” 然后将“128M”修改下大一点的值,例如:256M或者512M,如图(图是宝塔面板的

    70510

    PHP处理高分辨率图片的问题

    在对图片进行操作前需要将图片的所有信息读入内存中,同时还会使用另一部分内存同于处理计算并缓存输出,所以内存大小的使用还是和图片的大小有关。...PHP 中图片的处理都是使用了 GD 库,这个库提供了很多方法让 PHP 可以更方便地对图片进行操作,支持的图片格式如下: ?...关闭 memory_limit 群里的小伙伴最后使用了一种 简单粗暴的方式 解决了该问题,直接在PHP中关闭 memory_limit : set_time_limit(0); @ini_set('memory_limit...','-1'); 这样虽然解决了问题,但不优雅也不安全,同样在 php.ini 配置文件中将 memory_limit 的值设置很大也能解决: memory_limit = 256M PHP代码中也可以这样设置...: ini_set('memory_limit', '256M'); 上面我们将 memory_limit 参数固定了,这就带来一个弊端,因为大多数情况下不需要这么大的内存,有点浪费资源,最好的做法就是根据需要来设置

    1.2K40
    领券