我在 Linux 机器上安装了 Windows 机器。当我尝试在那里运行任何 php 脚本时,它说找不到它,但是,当我将文件复制到本地存储时,它运行没有问题。我尝试使用 exec、rw 选项进行安装,但没有任何改变此行为。
我是否违反了 php 上一些不为人知的安全规则?
$mount -o defaults,umask=777,uid=1000,gid=1000,rw,exec,username=USER,password=PASS //192.168.1.65/D /mnt/z3n-i7
$cd /mnt/z3n-i7/script
$php x.php
$PHP Fatal error: Unknown: Failed opening required 'x.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
$cp x.php ~/x.php;cd ~;
$php x.php
SUCCESS
--
斯特拉斯:
getcwd("/mnt/z3n-i7/.httpd/~scripts/pv/pv-linux", 4096) = 49
time(NULL) = 1339177164
lstat64("/mnt/z3n-i7/.httpd/~scripts/pv/pv-linux/pv.php", {st_mode=S_IFREG|0755, st_size=796, ...}) = 0
lstat64("/mnt/z3n-i7/.httpd/~scripts/pv/pv-linux", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/mnt/z3n-i7/.httpd/~scripts/pv", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/mnt/z3n-i7/.httpd/~scripts", {st_mode=S_IFDIR|0755, st_size=81920, ...}) = 0
lstat64("/mnt/z3n-i7/.httpd", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
lstat64("/mnt/z3n-i7", {st_mode=S_IFDIR|0755, st_size=49152, ...}) = 0
lstat64("/mnt", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0xbfc71038) = -1 ENOTTY (Inappropriate ioctl for device)
fstat64(3, {st_mode=S_IFREG|0755, st_size=796, ...}) = 0
write(2, "PHP Fatal error: Unknown: Faile"..., 131) = 131
猜测这是问题所在:设备的 ioctl 不合适?
答案1
经过一番研究,我发现这是访问 64 位操作系统上的文件系统时出现的 php 错误。据https://bugs.php.net/bug.php?id=50150,因此我在 32 位 Linux 机器上安装了我的 64 位 Windows 共享,并共享了该共享,并且它起作用了!
无论如何,谢谢你的帮助。
答案2
添加'noserverino'选项,问题就解决了。
例子:
mount -o defaults,umask=777,uid=1000,gid=1000,rw,exec,username=USER,password=PASS,noserverino //192.168.1.65/D /mnt/z3n-i7