gpt4 book ai didi

php - 为什么我尝试写入的文件是 "non-existing"?

转载 作者:可可西里 更新时间:2023-11-01 12:36:16 26 4
gpt4 key购买 nike

我的 CI 应用程序中有一个自定义配置文件。在我的 Web 应用程序的管理面板中,我想要一个可用于更改自定义文件配置数组值的表单。我现在的问题是 write_file 函数总是返回 false,我不知道为什么。我很确定我在函数中正确地写了路径并且配置目录不是只读的(这是 wamp,所以是 windows)。该文件肯定存在。我做错了什么?

这是 application/controllers/config/assets.php

$file = FCPATH . 'application\config\assets_fe.php';
if(is_writable($file)) {
$open = fopen($file, 'W');
if(!fwrite($open, $frontend)){
echo "Could not write file!";
} else {
echo "File written!";
}
} else {
echo "File not writable!";
}

这是该文件在 Windows 资源管理器中所在位置的屏幕截图。 config folder

我在 write_file 函数中尝试了以下文件路径:

write_file(FCPATH.'application/config/assets_fe.php', $frontend, 'W');
write_file('application/config/assets_fe.php', $frontend, 'W');
write_file('./application/config/assets_fe.php', $frontend, 'W');

以上文件路径均无效...可能是其他路径吗?

仅供引用:FCPATH = 'W:\wamp\www\zeus\' 它由 CI 的前端 Controller 定义以返回该文件的路径。

更新:我尝试只使用 native PHP 版本,它说文件或目录不存在。也许我使用了错误的路径。应该是什么?

最佳答案

答案很简单,您传递了一个无效的模式,大写字母W,给fopen。 .它应该是小写的 w。所以发生的事情是 fopen 返回 false,然后您将其传递给 fwrite 而不是资源,导致它返回 假的

改变

$open = fopen($file, 'W');

$open = fopen($file, 'w');

您还可以测试 fopen

的结果
if(!$open)
echo 'Could not open file';

您也可以尝试 file_put_contents,因为您不会对文件句柄执行任何其他操作。

$file = FCPATH.'application\config\assets_fe.php';
if(is_writable($file)){
if(!file_put_contents($file, $frontend)) {
echo "Could not write file!";
} else {
echo "File written!";
}
} else {
echo "File not writable!";
}

关于php - 为什么我尝试写入的文件是 "non-existing"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27477400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com