【发布时间】:2011-05-26 05:53:17
【问题描述】:
我正在尝试挂载一个 iscsi 虚拟磁盘,但如果我通过 php 中的 exec 函数执行命令,则会出现错误:mount: special device /dev/sdf1 does not exist。
但是,如果我直接在控制台中运行命令,它运行良好!!
我能做些什么?
我正在以一种很好的方式获得/dev/sdf1,它存在,但仅通过 php 不起作用。
谢谢
我使用sudo 运行命令并在控制台中以www-data 用户身份运行它,始终使用sudo,所以,我想这是相同的环境。
sudo mount -t ext3 /dev/sdf1 /san_disks/RIBS_2
sudoers 文件有以下几行:
www-data ALL = (root) /usr/bin/iscsiadm, /bin/mount, /bin/umount
%www-data ALL=NOPASSWD: ALL
它可以在控制台中运行。
【问题讨论】:
-
以“好的方式”详细说明。还要考虑 mod_chroot、suexec+fastcgi 环境。
-
您的 php 代码可能没有正确的权限来执行该命令,检查 apache 的权限以及运行它的用户。
-
你是否开启了安全模式?
-
[更新][1] 查看我的回答。这可能是时间问题。创建 iSCSI 设备后,它需要一秒钟左右才能出现。添加暂停将允许 mount 工作。 [1]:stackoverflow.com/questions/4465466/exec-doesnt-found-a-file/…
标签: php linux exec mount iscsi