У меня есть монтирование к моей машине Windows на машине Linux. Когда я пытаюсь запустить какие-либо сценарии 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

-

Strace:

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 для устройства?

2 ответа2

1

Добавьте опцию «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
1

После некоторых исследований я обнаружил, что это ошибка php при доступе к файловой системе, размещенной на 64-битной ОС. Это не исправлено, согласно https://bugs.php.net/bug.php?id=50150 , поэтому я установил свой 64-разрядный общий ресурс Windows на 32-разрядный компьютер с Linux и поделился общим ресурсом, установив его и его работал!

Все равно, спасибо за помощь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .