如何用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




