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

PHP | ini_get不反映赋予ini_set的值

|

问题描述: 在PHP中,我使用了ini_set函数来动态修改配置文件中的选项值,但是在之后使用ini_get函数获取该选项的值时,并没有反映出我通过ini_set赋予的新值。为什么会出现这种情况?

解答: 在PHP中,ini_set函数用于在运行时修改配置文件中的选项值。然而,有一些情况下,ini_get函数获取的值可能不会反映出通过ini_set赋予的新值。这是由于以下几个原因可能导致的:

  1. 作用域问题: ini_set函数设置的选项值具有作用域限制。如果在函数内部使用ini_set设置了选项值,那么该选项值只在该函数内部有效,函数执行完毕后会恢复为原来的值。因此,在函数外部使用ini_get获取该选项的值时,会返回原来的值而不是通过ini_set设置的新值。
  2. 配置文件加载时间: PHP的配置文件在启动时加载,并且在整个脚本执行期间保持不变。如果在配置文件加载后使用ini_set设置选项值,那么配置文件中的值将会覆盖通过ini_set设置的新值。因此,在配置文件加载后使用ini_get获取该选项的值时,会返回配置文件中的值而不是通过ini_set设置的新值。
  3. PHP安全限制: 为了增强安全性,PHP可能会限制某些选项的动态修改。这些选项通常是一些关键的安全选项,例如禁用函数、禁用动态加载扩展等。如果尝试通过ini_set修改这些选项的值,可能会被PHP忽略,导致ini_get获取的值仍然是原来的值。

解决方案: 要解决ini_get不反映赋予ini_set的值的问题,可以考虑以下几种方法:

  1. 使用全局变量: 如果需要在函数内部修改选项值,并且希望在函数外部获取到修改后的值,可以将选项值存储在全局变量中。这样,在函数内部使用ini_set设置选项值时,同时也将值赋给全局变量。在函数外部使用ini_get获取选项值时,直接读取全局变量即可。
  2. 修改配置文件: 如果需要在整个脚本执行期间保持修改后的选项值,可以直接修改配置文件。通过编辑配置文件,将选项值修改为所需的新值。这样,在整个脚本执行期间,使用ini_get获取选项值时,会返回修改后的新值。
  3. 检查PHP安全限制: 如果尝试修改的选项受到PHP的安全限制,可以查阅PHP官方文档或相关资源,了解该选项是否可以动态修改,以及如何正确修改。如果无法动态修改该选项,可以考虑其他解决方案或调整代码逻辑。

腾讯云相关产品推荐: 腾讯云提供了丰富的云计算产品和服务,以下是一些与PHP开发相关的产品推荐:

  1. 云服务器(CVM):提供弹性、可扩展的云服务器实例,可满足不同规模和需求的应用部署。 产品介绍链接:https://cloud.tencent.com/product/cvm
  2. 云数据库 MySQL 版(CDB):提供高性能、可扩展的云数据库服务,适用于各种规模的应用程序。 产品介绍链接:https://cloud.tencent.com/product/cdb_mysql
  3. 腾讯云对象存储(COS):提供安全、可靠的对象存储服务,适用于存储和管理各种类型的文件和数据。 产品介绍链接:https://cloud.tencent.com/product/cos

请注意,以上推荐的产品仅供参考,具体选择应根据实际需求和项目要求进行评估和决策。

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

相关·内容

ini_set()函数使用 以及 post_max_size,upload_max_filesize修改方法

", 0); //ini_set('magic_quotes_gpc', 'On'); php_value post_max_size       10M php_value...upload_max_filesize 8M php_value max_file_uploads    50 echo 'max_execution_time = ' . ini_get...'10M'); ini_set('upload_max_filesize','8M'); 正确做法是用.htaccess文件: php_value post_max_size...用ini_get("upload_max_filesize")和ini_get("post_max_size")来提取php.ini里上传文件最大和表单最大php.ini中upload_max_filesize...、max_execution_time:上传文件是需要时间,这个php默认超时时间,如果为0则超时(建议不要这么设置),超时时间到的话文件还没有上传完成,则也会上传失败,因此在修改上传文件大小限制时候

1.1K40
  • 基础知识点总结

    ) phpini_set函数是php自带用来修改设置php.ini配置文件函数,用这个函数很方便,不用去手动修改php.ini文件,有时候我们也没有权限去修改php.ini文件,这时就用这个函数...语法:ini_set("选项","");该函数用时最好放到php脚本最头部 比如:ini_set("max_execution_time", "180");//设置php脚本超时时间为180秒 string...ini_get (string varname );返回选项,如果选项为布尔型则返回为0或1 比如:echo ini_get('max_execution_time');//输出 30 如果想获取整个...php.ini里变量值,我们可以用ini_get加强函数 ini_get_all()它以数组形式返回整个php环境变量。...返回: 返回包含有服务器响应一个 HTTP 请求所发送标头索引或关联数组,如果失败则返回 FALSE。 <?

    81040

    php 学习笔记之关于时区那点事

    php // 获取默认时区 echo "默认时区: ".ini_get("date.timezone").".../Shanghai等时区 date.timezone = PRC > 详情请参考: http://php.net/date.timezone 动态设置 php 配置 > ini_set 支持设置当前脚本默认时区选项...因此,php 中还提供了动态修改 php.ini 配置文件方法,ini_set() 方法刚好支持动态设置时区. > 不用重启服务器,但仅仅针对当前脚本生效,其中 ini_set 方法支持 php.ini...配置选项列表 示例 // 设置当前时区 ini_set("date.timezone", "Asia/Tokyo"); // 获取默认时区 echo "当前时区: ".ini_get("date.timezone...目前世界上统一时间标准是协调时间时(UTC),中国时间标准是北京时间,北京时间比协调时间时快 8 个小时. 现实世界时区也要反映到计算机世界,其中时区信息数据库就是用于表示现实世界时区概念.

    2.6K40

    PHP常用库函数介绍+常见疑难问题解答

    php ini_set("display_errors",1); //ini_set("error_reporting",E_ALL); print_r error_reporting(E_ALL);...其他常用库函数 (1)ini_set ini_get——可操作配置参数列表       为了使自己程序在不同平台中拥有更好兼容性,很多时候我们都要获取当前Php运行环境参数。      ...) : //设定环境配置参数 ini_get(string varname) : //获取环境配置参数 PHP ini_set函数是设置选项中,在执行函数后生效,脚本结束时候,这个设置也失效。...不是所有的选项都能被改函数设置。具体那些能够设置,可以查看手册中列表 其实你把PHP ini_set函数和ini_get结合使的话,非常好。...比如你想在配置文件里添加自己包含文件路径,但是你有没有权限更改php.ini,那么你可以结合两个函数: ini_set ( 'include_path' , ini_get ( 'include_path

    1.4K80

    php中错误处理操作实例分析

    (E_USER_ERROR),也会终止程序后续执行 错误显示 是否显示错误报告(display_errors) 有2种来设定是否显示: 1.在php.ini文件中,设定display_erros,...这个代表所有错误 ?...在当前脚本代码中设置 ini_set("error_reporting",E_NOTICE); //就显示该一个级别的错误 ini_set("error_reporting",E_NOTICE| E_WARNING...中:log_errors=on或off 脚本中:ini_set("log_erros",1);或0 补充: ini_set("php配置项",);//用于脚本中设置php.ini中某项 $v=...ini_get("php配置项");//用于获取php.ini中某项 记录到哪里error_log 一般就只有2个写法: 1.直接写一个文件名,系统会自动在每个文件夹下都建立该文件名,并用其记录该文件夹下所有网页文件发生错误信息

    47010

    PHP处理高分辨率图片问题

    PHP 中图片处理都是使用了 GD 库,这个库提供了很多方法让 PHP 可以更方便地对图片进行操作,支持图片格式如下: ?...设置图片最大可上传大小 前端上传前可以先检测下大小,如果超过最大直接就不请求接口,同时为安全起见,后端接收到请求后也要检测大小,防止程序异常退出。 2. 压缩图片 3....关闭 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

    PHP 魔术引号(Magic Quotes)以及 WordPress 处理方式

    魔术引号(Magic Quotes) 魔术引号(Magic Quotes)是一个自动将进入 PHP 脚本数据进行转义过程。最好在编码时不要转义而在运行时根据需要而转义。...该选项可在运行时改变,在PHP默认为 off。 参见 set_magic_quotes_runtime() 和 get_magic_quotes_runtime()。...如何取得其值参见 ini_get()。...由于并不是每一段被转义数据都要插入数据库,如果所有进入 PHP 数据都被转义的话,那么会对程序执行效率产生一定影响。在运行时调用转义函数(如 addslashes())更有效率。...首先在运行时关闭 magic_quotes_runtime 和 magic_quotes_sybase: @ini_set( 'magic_quotes_runtime', 0 ); @ini_set(

    1.2K40

    phpExcelHTTP ERROR 500技巧

    最近需要讲excel导入到php数组进行操作 就看网上说用thinkphp+phpexcel来做比较好, 之前做过用phpexcel来讲数据导出到excel, 今天反过来,要将excel导入到PHP数组里...关键几个步骤都没问题,比如 一.PHP 这个设置 ini_set('memory_limit', '200M') 生效时间 1、这个设置完就生效了!...2、 只对当前设置程序生效,程序结束后还是原来配置; 3、跑完这段代码后,设置还是恢复默认设置。...可以建一个测试文件 test.php 运行前先通过 ini_get('memory_limit')获取内存配置,然后设置完之后,再获取输出下内存配置; 二.兼容两种格式XLS 和XLSX $objWriter...注意代码全角和半角区别 在自己本地导出excel没有问题,但是放到服务器出现500错误!

    1.6K30

    PHPsession生存周期

    ),如果已包含一个 session id 则说明此客户端之前已经创建过 session,服务器则按照 session id 把这个 session 中检索出来,如果客户端包含 session id...可以在php.ini文件中,或者通过ini_set()函数来修改这一参数。问题在于,经过多次测试,修改这个参数基本不起作用,session有效期仍然保持24分钟默认。...当一个有效请求发生时,PHP会根据全局变量session.gc_probability/session.gc_divisor(同样可以通过php.ini或者ini_set()函数来修改),来决定是否启动一个...php session_start(); ini_set('session.save_path','/tmp/'); //6个钟头 ini_set('session.gc_maxlifetime',21600...php function start_session($expire=0){ if($expire==0){ $expire=ini_get('session.gc_maxlifetime');

    77341

    php5全版本绕过open_basedir读文件脚本

    漏洞很久之前(大概5年前)被提出来了,但并不是php代码上问题,所以问题一直存在,直到现在。我一直没留意,后来yaseng告诉我,他测试了好像5.5都可以。 ...*/ header('content-type: text/plain'); error_reporting(-1); ini_set('display_errors', TRUE); printf(...: %s\n", ini_get('disable_functions')); $file = str_replace('\\', '/', isset($_REQUEST['file']) ?...其中并没有任何操作触发open_basedir,但达到效果就是绕过了open_basedir读取任意文件。错误不在php,但又不知道把错误归结到谁头上,所以php一直未管这个问题。 ...我在我VPS(php5.3.28 + nginx)和树莓派(php 5.4.4 + nginx)上都测试过,成功读取。  树莓派测试:  ? ?

    80631

    PHP全栈学习笔记6

    php foreach (数组 as ){ //执行任务 } ?> <?php foreach (数组 as 下标 => ){ //执行任务 } ?> ? image.png ?...image.png require('func.php');//致命错误立即停止 require_once() include('function.php');//只是抛出警告信息,终止程序 set_include_path...testa'); include('test1.php'); include('test2.php'); 导入testa文件下所有的文件 ini_set('include_path',get_include_path...,他必须是一个确定 引用全局变 1 global variable 2 GLOBALS[""] 第一种方法操作原始变量 第二张会操作原始变量 ?...image.png 传递不带&号,不能通过函数改变原来,因为是不同内存空间,参数传递带&号,可以通过函数改变他,引用是同一个内存空间 在函数中可以通过$global 来引用函数外,不过是开辟新内存空间存储

    56030

    PHPmicrotime()函数 & 浮点数显示精度

    咳咳,我一直对这个函数命名挺纠结,明明返回是秒,非要在名字带个micro,总让我以为返沪是微秒(microseconds)。...其实这个函数功能是返回带微秒时间,PHP中声明如下: mixed microtime ([ bool $get_as_float = FALSE ] ) 关于返回,文档中是这样描述 By default...也就是说,如果不加参数TRUE,那么返回是"msec sec"这样形式,其中msec也就是用秒表示,也就是说是小数形式秒。 如果加上参数TRUE,就更好理解喽,就是带小数秒喽。...echo ini_get("precision"), "\n"; ini_set("precision",16); $mt=microtime(); $mt_f=microtime(true); var_dump...好了,就啰嗦这些啦,其实我本来想多啰嗦一些,可是浏览器崩溃了,这些都是我重新敲,这心情啊,可酸爽了。

    1.4K00
    领券