Php str_replace()不在aws服务器中工作,返回空字符串,但在cpanel和本地上工作

Php str_replace()不在aws服务器中工作,返回空字符串,但在cpanel和本地上工作,php,laravel,nginx,amazon-ec2,str-replace,Php,Laravel,Nginx,Amazon Ec2,Str Replace,我正在开发一个laravel骑乘共享应用程序,对于设置数据,我使用了配置文件。要更改任何值,请在更改后使用str\u replace和file\u put\u contents指定文件file\u get\u contents来更新该值。 下面是一些代码示例: $config = base_path() . '/config/constants.php'; $file = file_get_contents($config); $change_content = $file; foreach (

我正在开发一个laravel骑乘共享应用程序,对于设置数据,我使用了配置文件。要更改任何值,请在更改后使用str\u replace和file\u put\u contents指定文件file\u get\u contents来更新该值。 下面是一些代码示例:

$config = base_path() . '/config/constants.php';
$file = file_get_contents($config);
$change_content = $file;
foreach ($request->all() as $key => $value) {

        $value = (trim($value) == 'on') ? '1' : trim($value);
        $searchfor = config('constants.' . $key);
        if ($value != $searchfor) {
            $search_text = "'" . $key . "' => '" . $searchfor . "'";
            $value_text = "'" . $key . "' => '" . $value . "'";
            $change_content = str_replace($search_text, $value_text, $change_content);
        }

        file_put_contents($config, $change_content);
    }
但是$change\u内容在AWS服务器中不返回任何值

注意:这在我的本地机器中也在Cpanel中工作,但在AWS ec2中不工作。我在Ubuntu 20.04中使用php7.4和Nginx。Cpanel、local和AWS ec2的配置相同

谁能告诉我str_replcae有没有额外的配置

注意:没有,PHP中没有用于str_replace的额外插件/扩展。 str_replace()是PHP4、PHP5、PHP7和PHP8上内置的字符串函数

在代码中,可能有2个错误。因为您的代码在本地运行,并且您的文件具有写入权限

  • 第一点是-您的
    /config/constants.php
    文件太大,这就是为什么foreach循环花费太多时间并退出它的原因,但是对于这个问题,php应该抛出一个错误
  • 第二点是-您正在使用laravel config和来自
    bootstrap/cache/config.php
    $searchfor
    变量。您正在用配置缓存值替换该值,但是您的
    /config/constants.php
    可能没有这个确切的键值,或者在它们之间有一些空格。我想你明白我的意思了

  • 检查这些东西是否正确

    • 确保您的文件存在于正确的目录中并具有写入权限
    • 确保本地和服务器
      constants.php
      的内容相同
    • 手动删除bootstrap/cache/config.php,或通过运行
      php artisan config:cache
      此命令重新缓存配置

    您是否确定路径正确,并且您对该文件具有读取(和写入)权限?删除$change\u c…=$文件,然后在str\u replace($search\u t…)中将$change\u内容替换为$file@KenLee是,文件具有正确的权限,默认情况下,我得到的文件内容没有str_replcae@KevinGales但这在我的本地机器上运行良好,也在cpaneldo a
    dd($search\u text、$value\u text、$change\u content)
    中运行,并检查AWS和本地的输出是否有任何差异