文件目录写入报错

区块链研究 2013-08-06 11:19:34
我用php建立一个文件夹。设置0777权限。用file_put_content写入文件报错:
failed to open stream: Permission denied'

1、首先想到的就是权限问题,我用函数判断创建的文件夹是否有可写权限。我创建test.txt测试,可以成功。
还有奇怪的是,程序往里面写入十几个文件都成功,但写到某个文件就报错了。如果没有可写权限,应该是一个文件都没有创建成功才是呀。

2、路径是正确的,这点检查很多遍了。

此外我想不到其他可能性了。麻烦高手指点一下,谢谢。
...全文
200 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Michaelssss 2013-08-10
  • 打赏
  • 举报
回复
引用 9 楼 milu2003516 的回复:
[quote=引用 7 楼 Michaelssss 的回复:] 命名问题?如果是写到了某个文件,是单独只有一个还是有规律的几个,还是散乱的,这些都去试试
散乱的。有时候一运行就出现错误,有时候第5个,第11个都有可能。[/quote] 整个文件路径长度,试试段路径,若不行,换机试试- -若还不行,建议放弃原有的DZ论坛的文件,自己写一个
区块链研究 2013-08-09
  • 打赏
  • 举报
回复
引用 7 楼 Michaelssss 的回复:
命名问题?如果是写到了某个文件,是单独只有一个还是有规律的几个,还是散乱的,这些都去试试
散乱的。有时候一运行就出现错误,有时候第5个,第11个都有可能。
区块链研究 2013-08-09
  • 打赏
  • 举报
回复
引用 7 楼 Michaelssss 的回复:
命名问题?如果是写到了某个文件,是单独只有一个还是有规律的几个,还是散乱的,这些都去试试
假设命名是胡乱命名的,但是出错的时候,显示的文件路径也是对的。所以文件名已经不重要了。路径对就行了。
Michaelssss 2013-08-08
  • 打赏
  • 举报
回复
命名问题?如果是写到了某个文件,是单独只有一个还是有规律的几个,还是散乱的,这些都去试试
码无边 2013-08-08
  • 打赏
  • 举报
回复
贴出你代码瞧瞧,是不是你写循环出现问题。
区块链研究 2013-08-06
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
is_writable -- 判断给定的文件名是否可写
我用的是discuz的函数 public static function dirWriteable($dir) { $writeable = 0; if(!is_dir($dir)) { exit('sdg'); @mkdir($dir, 0777); } if(is_dir($dir)) { if($fp = @fopen("$dir/test.txt", 'w')) { @fclose($fp); @unlink("$dir/test.txt"); $writeable = 1; } else { $writeable = 0; } } return $writeable; } 如果文件夹不可写,应该是一个文件都写不进去才是,为何写入十几个才出错?这个很麻烦
xuzuning 2013-08-06
  • 打赏
  • 举报
回复
is_writable -- 判断给定的文件名是否可写
区块链研究 2013-08-06
  • 打赏
  • 举报
回复
此外,http进程是system用户组。查看文件夹的权限,这个用户组是有权限的。
区块链研究 2013-08-06
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
可能是目标文件存在,并被其他软件打开了 出现错误而时候,应给出完整的错误信息和出错行的代码(如果涉及到变量,则变量值应一并给出)
出错情况我已经简练的概括了要点了。详细报错如下: Uncaught error with message 'E_WARNING: file_put_contents(E:\AppServ\www\phpwind\upload\/windid/attachment/avatar/000/00/05/515_middle.jpg) [<a href='function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: Permission denied' 出错行:$put_re = file_put_contents($avatar_dir_save, $img_re);//写入头像 $img_re这个变量是一个图像。我换成随便的一个字符串比如“3453”也不行。 $avatar_dir_save这个变量主要是提示报错中的那个路径,路径检查正确无误。 在写入文件之前,我都会判断文件是否存在才会执行这些代码。而且我看了当报错说写入不了那个文件时,我看了文件夹,的确没有那个文件。 想不出还有什么可能性了。
xuzuning 2013-08-06
  • 打赏
  • 举报
回复
可能是目标文件存在,并被其他软件打开了 出现错误而时候,应给出完整的错误信息和出错行的代码(如果涉及到变量,则变量值应一并给出)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧