phpcodeigniter

PHP str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated


I'm getting this error while running my app:

PHP str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated

I am Using CodeIgniter Version : V4.1.8 PHP Version : 8.1.2, full error output below:

{"data":[
    ["omron","<span class=\"label label-success\">Active<\/span>",
    "<button type=\"button\" class=\"btn btn-default\" onclick=\"editBrand(4)\" data-toggle=\"modal\" data-target=\"#editBrandModal\"><i class=\"fa fa-pencil\"><\/i><\/button> <button type=\"button\" class=\"btn btn-default\" onclick=\"removeBrand(4)\" data-toggle=\"modal\" data-target=\"#removeBrandModal\"><i class=\"fa fa-trash\"><\/i><\/button>\n\t\t\t\t"]
    ]
}
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: 8192</p>
<p>Message:  str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated</p>
<p>Filename: core/Output.php</p>
<p>Line Number: 457</p>


    <p>Backtrace:</p>

UPDATE: Code

if ($this->parse_exec_vars === TRUE) 
{ 
    $memory = round(memory_get_usage() / 1024 / 1024, 2).'MB'; 
    // below is line 457
    $output = str_replace(array('{elapsed_time}', '{memory_usage}'), array($elapsed, $memory), $output); 
}

Solution

  • This error message can show up if you have not loaded any views. Codeigniter's internal output buffer is never initialized thus being null. The output buffer is the third parameter to str_replace(). There might be other ways to trigger this error message.

    You probably want to load a valid view, at some point.

    PHP 7 and lower just would ignore the missing parameter, while PHP 8+ displays the warning. It may also vary with your environment / debug settings.