5

I have this part of code:

...
ini_set('max_execution_time', 300);
...

Until now it worked. Now i am getting this error:

ini_set() expects parameter 2 to be string, integer given

What has changed? Can it be caused by PHP version?

MakoBuk
  • 622
  • 1
  • 10
  • 19
  • Possible duplicate of [ini\_set, set\_time\_limit, (max\_execution\_time) - not working](https://stackoverflow.com/questions/1590441/ini-set-set-time-limit-max-execution-time-not-working) – Crou Sep 27 '19 at 12:23

3 Answers3

8

PHP actually expects both parameters of ini_set() to be of type string and returns a string:

ini_set ( string $varname , string $newvalue ) : string

You can find this in the PHP manual on ini_set.

If you have set strict_types with

declare(strict_types=1);

then you will have to change your ini_set() values to

ini_set('max_execution_time', '300');
digijay
  • 1,329
  • 4
  • 15
  • 25
  • 2
    So many tutorial out in the wild are teaching us to use **integer** as the seconds parameter, am very surprise to know that the seconds parameter is actually of type **string**... – Ng Sek Long Sep 21 '21 at 02:06
2

Not sure how it was working for you. Here is the reference. Second parameter needs to be string data type.

Maybe you was using a variable to set it until now and that variable was somehow getting casted to string? not sure.

Anyways, just use string instead of an integer as second parameter:

ini_set('max_execution_time', '300');

and you should be good.

Weird enough, just now i noticed, giving second parameter as integer is working on my Server.

Also Here, if you search with "ini_set", the example is given with second parameter as integer:

ini_set('assert.exception', 1);

It is weird why its not working for you.

Abhay Maurya
  • 11,819
  • 8
  • 46
  • 64
1

PHP accept the key value pair in string in PHP ini_set().

ini_set("max_execution_time", "300");
Dharman
  • 30,962
  • 25
  • 85
  • 135
Rahul Gupta
  • 991
  • 4
  • 12