CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

如何用php建立文件夹后继续建立新文件???

楼主jinliangonline(水清无鱼)2006-09-14 14:56:03 在 Web 开发 / PHP 提问

平台:linux   as4+php4.3+apache   2.0.52  
  功能:  
  利用php语句建立一个单独的文件夹,然后可以向这个文件夹内写入、删除文件。  
  最后可以直接删除这个文件夹。  
  请教下具体的解决方法。  
  现在最主要的难题是建立文件夹后不能通过php语句向文件夹内写入文件。  
  谢谢各位了。 问题点数:100、回复次数:20Top

1 楼aruhan(前阿若罕)回复于 2006-09-14 15:00:05 得分 20

php语句向文件夹内写入文件  
  fopen("xxxx.txt",   "a+");  
  就可以了   !如果不行就得改你所创建的文件夹权限了!  
   
   
  Top

2 楼jinliangonline(水清无鱼)回复于 2006-09-14 15:03:33 得分 0

文件夹权限已经在建立时给出(0777)  
  执行fopen命令不能给此文件夹建立新文件。  
  但是用ftp软件可以给此文件夹上传文件。Top

3 楼lantersen(蓝水仁~)回复于 2006-09-14 15:18:59 得分 0

那很有可能是路径的事,你试着放一个文本文件在这目录下,看能不能打开;  
  如果可以,再试着写个文件到些目录下;Top

4 楼jinliangonline(水清无鱼)回复于 2006-09-14 15:26:31 得分 0

通过ftp上传到这个文件夹的文本文件、php文件都可以通过http访问。  
  但是通过http访问这个文件夹里的fopen文件却不能执行fopen功能,建立新文件失败。  
   
  Top

5 楼iasky(iasky)回复于 2006-09-14 15:37:28 得分 40

fopen前先要把文件夹建好,如果文件夹不存在,是不能fopen的  
   
  Top

6 楼Robjuan()回复于 2006-09-14 15:41:46 得分 10

1.文件夹是否存在;  
  2.文件夹属性是否可读写;  
  3.fopen   中提供的文件名是否存在此文件!Top

7 楼jinliangonline(水清无鱼)回复于 2006-09-14 15:41:56 得分 0

fopen那个文件是放在在建立好的文件夹里的(通过mkdir建立的)。  
  就是想在这个文件夹里通过php语句建立新文件。  
  现在向这个文件夹里通过@move_uploaded_file上传图片也不行。Top

8 楼jinliangonline(水清无鱼)回复于 2006-09-14 15:43:30 得分 0

fopen有些属性好像是不用原来就存在吧  
  可以检测有没有这个文件,没有就自行建立新文件的吧。Top

9 楼iasky(iasky)回复于 2006-09-14 15:46:06 得分 0

设置好文件夹的权限,要可写  
  Top

10 楼zzd8310(东北笑笑生)(经常被模仿,从未被超越!||我之所以把昵称写这么长。就是想看看昵称到底能写多长,真是长)回复于 2006-09-14 15:53:11 得分 30

UPTop

11 楼jinliangonline(水清无鱼)回复于 2006-09-14 15:54:34 得分 0

文件夹权限已经在mkdir建立时给出(0777)  
  Top

12 楼iasky(iasky)回复于 2006-09-14 15:58:25 得分 0

贴下你的程序,和出的什么错误Top

13 楼aruhan(前阿若罕)回复于 2006-09-14 16:07:05 得分 0

linux下ftp的用户和执行php的用户是不同的!  
  所以在ftp能操作不一定php用户就能操作.  
  还有路径方面你需要注意!Top

14 楼jinliangonline(水清无鱼)回复于 2006-09-14 16:20:20 得分 0

<?php  
  //建立test文件夹  
  $addtime=date("Ymd",time());  
  $testdir="./test/";  
  if(file_exists   ($testdir)):  
  else:  
  mkdir   ($testdir,   0777);  
  @chmod   ($testdir,   0777)  
  endif;  
  ?>  
  可以正常建立test文件夹,且属性为777.  
   
  <?php  
  //建立test.php  
  fopen("test.php","a+")   or   die('sss');  
  ?>  
   
  错误提示:  
  Warning:   fopen():   SAFE   MODE   Restriction   in   effect.   The   script   whose   uid   is   532   is   not   allowed   to   access   /html/worldzf/upload/upload   owned   by   uid   48   in   /html/worldzf/upload/upload/fopena.php   on   line   2  
   
  Warning:   fopen(test.php):   failed   to   open   stream:   No   such   file   or   directory   in   /html/worldzf/upload/upload/fopena.php   on   line   2  
  sss  
   
  Top

15 楼iasky(iasky)回复于 2006-09-14 16:27:19 得分 0

你的php是在安全模式下的,这样fopen有更多的限制了,PHP   将检查被操作的目录是否和正在执行的脚本有相同的   UID。  
   
  这个就是你的问题所在Top

16 楼Robjuan()回复于 2006-09-14 16:29:25 得分 0

很明显,你的安全模式打开了,但uid不同,所以是没法创建的Top

17 楼jinliangonline(水清无鱼)回复于 2006-09-14 16:30:38 得分 0

可是如果关闭safe   mode会有潜在的危险啊。  
  可不可以在语句上进行修改来实现?Top

18 楼iasky(iasky)回复于 2006-09-14 16:43:25 得分 0

if(!is_dir($testdir))    
  {  
  @mkdir($testdir,   0777);  
  }  
  if(@$fp   =   fopen("test.php","a+"))  
  {  
  //....  
  }  
   
  在同一个文件中呢Top

19 楼yunfeifan(云飞凡)回复于 2006-09-14 17:29:08 得分 0

很明显php   执行的用户和组   没有权限创建文件,你可以在apache   httpd.conf   文件中修改user   和group   使它有创建文件的权限就可以了Top

20 楼jinliangonline(水清无鱼)回复于 2006-09-15 08:31:17 得分 0

我放在其他文件夹里的fopen文件可以正常执行,可以创建文件的。  
  解决了,设立了safe_mode_exec_dir。谢谢参与,给分。Top

相关问题

关键词

得分解答快速导航

  • 帖主:jinliangonline
  • aruhan
  • iasky
  • Robjuan
  • zzd8310

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo