现象是:
成功登录PureFTPd管理工具后,一直在加载页面,过了很长时间服务器返回500错误。
通过追踪index.php代码发现,问题出现在如下代码段:
// Read the userfile for example '/etc/passwd' // todo check security settings of php $filename = $UsersFile; $fh = fopen($filename,"r"); // 我发现这里打开文件/etc/passwd失败了,返回空 $iNrofunixusers = 0; while (!feof ($fh)) // 最终问题出在这里,$fh为空,造成这里死循环,最终导致500错误 { $line = fgets($fh,4096); $data = explode(":",$line); $user = trim($data[0]); $user_id = trim($data[2]); if ($user[0] != '#' && strlen($user) != 0 && strlen($user_id) != 0) { if(compare_array($user,$BlacklistUsers) == -1) // no hit { $unix_users[$iNrofunixusers] [0] = $user; $unix_users[$iNrofunixusers] [1] = $user_id; $iNrofunixusers++; } } } fclose($fh);
进行简单的Fix如下:
将while (!feof ($fh)) 改为 while ($fh && !feof ($fh))
这下可以顺利进入PureFTPd管理后台了。但是Uid和Gid的下拉列表的内容仍旧无法显示,这样就无法修改ftp用户所属的系统用户和用户组。
问题还是出在 fopen('/etc/passwd',"r")失败上。很奇怪,/etc/passwd的权限是-rwxr--r--,因此apache用户应该是有权限读取该文件的。
折腾了很长时间一直找不到原因...
后来突然想起之前为了防止虚拟主机之间旁注的发生,限制了虚拟主机的文件操作目录仅为站点目录,详见这里http://www.redicecn.com/html/wangluoanquan/20110904/330.html。
给open_basedir加上/etc/目录,重启Apache,这下Uid和Gid列表中显示出正常的数据了。
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢