PHP - ini_set() 期望参数 2 是字符串,给定整数
Posted
技术标签:
【中文标题】PHP - ini_set() 期望参数 2 是字符串,给定整数【英文标题】:PHP - ini_set() expects parameter 2 to be string, integer given 【发布时间】:2020-01-27 18:27:44 【问题描述】:我有这部分代码:
...
ini_set('max_execution_time', 300);
...
到目前为止,它一直有效。现在我收到此错误:
ini_set() expects parameter 2 to be string, integer given
发生了什么变化?会不会是php版本造成的?
【问题讨论】:
ini_set, set_time_limit, (max_execution_time) - not working的可能重复 【参考方案1】:PHP 实际上期望ini_set()
的两个参数都是string
类型并返回string
:
ini_set ( 字符串 $varname , 字符串 $newvalue ) : 字符串
你可以在PHP manual on ini_set
找到这个。
如果您已将strict_types
设置为
declare(strict_types=1);
那么您将不得不将您的 ini_set()
值更改为
ini_set('max_execution_time', '300');
【讨论】:
很多教程都在教我们使用 integer 作为 seconds 参数,我很惊讶知道 seconds 参数实际上是 string 类型...【参考方案2】:不确定它是如何为您工作的。 Here 是参考。第二个参数需要是字符串数据类型。
也许你直到现在都在使用一个变量来设置它,而那个变量不知何故被强制转换为字符串?不确定。
无论如何,只需使用字符串而不是整数作为第二个参数:
ini_set('max_execution_time', '300');
你应该很好。
很奇怪,刚才我注意到,将第二个参数作为整数在我的服务器上工作。
还有Here,如果你用“ini_set”搜索,例子给出的第二个参数是整数:
ini_set('assert.exception', 1);
奇怪的是为什么它不适合你。
【讨论】:
是的,我已经包装了值。但是直到现在我仍然不知道它为什么起作用。 PHP 版本没变……还是 7.1 @user3414654 更新了答案,以确认您最初的声明【参考方案3】:PHP 接受 PHP ini_set() 中字符串中的键值对。
ini_set("max_execution_time", "300");
【讨论】:
这里已经有这样的答案了。你能解释一下你的答案有什么不同吗?以上是关于PHP - ini_set() 期望参数 2 是字符串,给定整数的主要内容,如果未能解决你的问题,请参考以下文章
获取 PHP 错误警告:fputcsv() 期望参数 2 为数组
mysql_select_db() 期望参数 2 是资源,给定 PHP 验证的对象