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 验证的对象

ini_set

PHP 警告:in_array() 期望参数 2 是数组,字符串在

ini_set() 作用范围?

PHP PHP ini_set显示错误和默认时区