Sho*_*291 8 php codeigniter file
我的CI应用程序中有一个自定义配置文件.在我的Web应用程序的管理面板中,我想有一个表单,我可以用它来更改自定义文件的配置数组的值.我现在的问题是write_file函数总是返回false,我不知道为什么.我很确定我正在正确编写函数中的路径,并且config目录不是只读的(这是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!";
}
Run Code Online (Sandbox Code Playgroud)
这是该文件在Windows资源管理器中的位置的屏幕截图.

我在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');
Run Code Online (Sandbox Code Playgroud)
以上文件路径都没有工作......它可能是别的吗?
仅供参考:FCPATH ='W:\ wamp\www\zeus \',它由CI的前端控制器定义,以返回该文件的路径.
更新:我尝试只使用本机PHP版本,它说文件或目录不存在.也许我正在使用错误的道路.它应该是什么?
答案很简单,要传递一个无效的模式以来,在市委W¯¯,对fopen.它应该是小写的w.所以正在发生的fopen是返回false,然后你将它传递给fwrite而不是资源,导致它返回false.
只是改变
$open = fopen($file, 'W');
Run Code Online (Sandbox Code Playgroud)
至
$open = fopen($file, 'w');
Run Code Online (Sandbox Code Playgroud)
你也可以测试一下结果 fopen
if(!$open)
echo 'Could not open file';
Run Code Online (Sandbox Code Playgroud)
您也可以尝试,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!";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |