ChinaUnix首页 > 精华文章 > Linux > 正文

[精彩] php 管理 ftp 服务器.问题集锦,感谢 chenyx 等人的回复!!


http://www.chinaunix.net 作者:mfkwwgi  发表于:2009-07-24 19:16:43
发表评论】 【查看原文】 【Linux讨论区】【关闭

两个问题.
第一个,我用php 页面去下载我FTP里面的文件,FTP用是的vsftpd+mysql做成功的.down.php下载页面的源码为:
<?
$file_name = $_GET['File'];
$file_dir = $_GET['Dir']."/";
echo $file_dir."<br>";
echo $file_name."<br>";
if (!file_exists($file_dir.$file_name))
{
        echo "file is not exist";
        exit;
}
else
{
        $file = fopen($file_dir.$file_name,"r");
        Header("Content-type: application/octet-stream");
        Header("Accept-Ranges: bytes");
        Header("Accept-Length: ".filesize($file_dir.$file_name));
        Header("Content-Disposition: attachment; filename=".$file_name);
        echo fread($file,filesize($file_dir.$file_name));
        fclose($file);
        exit;
}
?>
当调用下载页面时.可以弹出下载对话框,并下载成功.每个下载下来的文件都一样,但文件内容为:
Warning: fopen(/tmp/vsftpd/a) [function.fopen]: failed to open stream: Permission denied in /var/www/html/down.php on line 13

Warning: filesize() [function.filesize]: stat failed for /tmp/vsftpd/a in /var/www/html/down.php on line 16

Warning: filesize() [function.filesize]: stat failed for /tmp/vsftpd/a in /var/www/html/down.php on line 18

Warning: fread(): supplied argument is not a valid stream resource in /var/www/html/down.php on line 18

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/html/down.php on line 19



我FTP目录是在/tmp/vsftpd,vsftpd目录的权限是777 ,php的默认目录是在/var/www/html .是不是给权限有关??应该乍样去修改??
以上是一个问题.




下面是第二个问题:
我用ftp://url,上传的文件.用php页面遍历,只能看到ftp根目录上的文件,不能看到目录,是怎么一回事呢.??
大家帮忙想一下.是那儿的问题.谢谢

[ 本帖最后由 mfkwwgi 于 2009-6-4 21:39 编辑 ]



 chenyx 回复于:2009-06-04 08:43:36

Selinux关闭看看


 mfkwwgi 回复于:2009-06-04 10:44:17

谢谢.chenyx.第一个问题解决了.因为刚接触linux 所以这个对它很是不了解.一个问题就会卡壳很久。
我在附上一个,关闭linux的SElinux不重启linux的方法(转自:http://www.xiaojb.com/archives/tips/disabled-selinux.shtml)

Redhat系统,修改/etc/sysconfig/selinux文件:
#SELINUX=enforcing
SELINUX=disabled

重启生效,如果不想重启,用命令
setenforce 0





第一个问题完美解决了。可是第二个问题。还有一些问题。我在详细说说我的环境,我是RHEL 5做的,vsftpd+mysql,克隆vsftpdguest 本地账户(自己建立的),做的ftp。通过ftp://url上传文件,因为要做一些统计所以就用php来做下载。现在。遍历和下载是可以了,但如果ftp://url上传的文件夹带有一些空格,php页面就没有办法遍历文件夹里面的文件。
大家在帮忙想想。在次谢谢大家。


 chenyx 回复于:2009-06-04 10:55:40

可能是字符编码的问题


 mfkwwgi 回复于:2009-06-04 16:52:03

相当感谢  [color=Red]chenyx [/color]  两个问题都成功了.回答太精彩了.
的确是[color=Red]字符编码[/color]的问题,我是这样解决的.
用$Dir=urlencode($dir."/".$file);来编码.在需要解码的时候.用$dir=urldecode($dir);解码;

呵呵.那就在送一个问题了.希望你不要见怪哈;
问题是这样的.克隆本地账户vsftpdguest ,在用ftp://url上传文件时,总是这样的权限:
-rw------- 1 vsftpdguest vsftpdguest 2419 Jun  4 14:53 problem.txt
文件夹是:
drwx------ 2 vsftpdguest vsftpdguest 4096 Jun  4 14:51 12345
我的问题.怎样让上传文件时.自动让文件对其它的组可以读,文件夹对其它的用户组可以读取里面的内容;
也就是,文件为-rw----r--文件夹为drwx---r-x 这样.我知道有个umask 命令,能不能用上?谢谢.

这样的目的是让.php可以遍历里面的文件,也可能用php来下载.
 相当感谢了.

[ 本帖最后由 mfkwwgi 于 2009-6-4 16:56 编辑 ]


 vermouth 回复于:2009-06-04 19:34:44

可以 umask=022


 mfkwwgi 回复于:2009-06-04 20:53:03

引用:原帖由 vermouth 于 2009-6-4 19:34 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=7032939&ptid=1115769]
可以 umask=022 



应该如何操作呢。是不是用vsftpdguest登陆。去umask 022呢???


 chenyx 回复于:2009-06-04 22:02:41

http://book.51cto.com/art/200810/92804.htm


 mfkwwgi 回复于:2009-06-04 23:06:14

在次感谢 chenyx 。在vsftpd.conf里面加入 anon_umask=022 成功了。现在php可以遍历ftp目录。可以成功下载里面的文件了。
下步工作就是美化php页面,linux是一个优秀的系统。学习linux真的有很多的乐趣,多亏网上像 chenyx 等人的好心帮助。
多谢你们的帮助。


 聪明笨小孩 回复于:2009-06-22 10:09:00

学习


 山野村夫 回复于:2009-06-22 10:19:19

学习了


 www_xylove 回复于:2009-06-22 12:30:37

顶顶


 qzdmail 回复于:2009-06-23 00:05:12

不错,赞一个


 zhengdl126 回复于:2009-07-22 10:31:18

解决问题的效率很快,,,高手也很有好!~


 tqjs 回复于:2009-07-24 19:16:43

楼主很厚道,解决完问题会把过程和大家分享




原文链接:http://linux.chinaunix.net/bbs/viewthread.php?tid=1115769
转载请注明作者名及原文出处