Php str_replace()不在aws服务器中工作,返回空字符串,但在cpanel和本地上工作
我正在开发一个laravel骑乘共享应用程序,对于设置数据,我使用了配置文件。要更改任何值,请在更改后使用str\u replace和file\u put\u contents指定文件file\u get\u contents来更新该值。 下面是一些代码示例: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 (
$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应该抛出一个错误bootstrap/cache/config.php
的$searchfor
变量。您正在用配置缓存值替换该值,但是您的/config/constants.php
可能没有这个确切的键值,或者在它们之间有一些空格。我想你明白我的意思了检查这些东西是否正确
- 确保您的文件存在于正确的目录中并具有写入权限
- 确保本地和服务器
的内容相同constants.php
- 手动删除bootstrap/cache/config.php,或通过运行
此命令重新缓存配置php artisan config:cache
dd($search\u text、$value\u text、$change\u content)
中运行,并检查AWS和本地的输出是否有任何差异