Назад | Перейти на главную страницу

PHP-CLI не может выполнять сценарии на Samba Share (с использованием cifs) внутри гостевой виртуальной машины (Centos 6)

У меня есть виртуальная машина centos 6, работающая в качестве гостя в Virtualbox. Я установил стек LAMP, к которому я могу получить доступ из среды хоста (Windows).

Я смонтировал общий ресурс SMB с помощью 'mount -t cifs', и я могу использовать apache для обслуживания файлов из этого общего ресурса (пока все в порядке)

проблема Теперь я пытаюсь запустить простой скрипт test.php из командной строки. Это результат, который я получаю (ниже)

обратите внимание, что произойдет, если я неправильно напишу имя файла (другое сообщение), поэтому файл есть, как будто php не может его выполнить.

Я включил это как изображение, потому что я не могу найти способ скопировать с моего терминала виртуальной машины. Любая помощь будет оценена по достоинству, я уже потратил гораздо больше времени, чем мог себе представить, чтобы это запустить и запустить.

edit3: Я могу запустить php из командной строки, когда я не пытаюсь запустить файл из общего ресурса samba, поэтому он имеет какое-то отношение к монтированию. Я смонтировал привод таким образом ...

mount -t cifs -o username=xxxx,password=xxxx,nounix,fir_mode=0777,file_mode=0777,gid=48,uid=48 //path/to/samba/share /var/www/vhosts

edit1: -bash: hexdump test.php 0000000 6574 7473 6620 6c69 0a65 000000a

edit2:

strace -o mystraceoutput.txt -f -e trace = файл php test.php

4423  execve("/usr/bin/php", ["php", "test.php"], [/* 19 vars */]) = 0
4423  access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
4423  open("/etc/ld.so.cache", O_RDONLY) = 3
4423  open("/lib/libcrypt.so.1", O_RDONLY) = 3
4423  open("/usr/lib/libedit.so.0", O_RDONLY) = 3
4423  open("/lib/libncurses.so.5", O_RDONLY) = 3
4423  open("/usr/lib/sse2/libgmp.so.3", O_RDONLY) = 3
4423  open("/lib/libbz2.so.1", O_RDONLY) = 3
4423  open("/lib/libz.so.1", O_RDONLY)  = 3
4423  open("/lib/libpcre.so.0", O_RDONLY) = 3
4423  open("/lib/libm.so.6", O_RDONLY)  = 3
4423  open("/lib/libdl.so.2", O_RDONLY) = 3
4423  open("/lib/libnsl.so.1", O_RDONLY) = 3
4423  open("/usr/lib/libxml2.so.2", O_RDONLY) = 3
4423  open("/lib/libgssapi_krb5.so.2", O_RDONLY) = 3
4423  open("/lib/libkrb5.so.3", O_RDONLY) = 3
4423  open("/lib/libk5crypto.so.3", O_RDONLY) = 3
4423  open("/lib/libcom_err.so.2", O_RDONLY) = 3
4423  open("/usr/lib/libssl.so.10", O_RDONLY) = 3
4423  open("/usr/lib/libcrypto.so.10", O_RDONLY) = 3
4423  open("/lib/libc.so.6", O_RDONLY)  = 3
4423  open("/lib/libresolv.so.2", O_RDONLY) = 3
4423  open("/lib/libfreebl3.so", O_RDONLY) = 3
4423  open("/lib/libtinfo.so.5", O_RDONLY) = 3
4423  open("/lib/libkrb5support.so.0", O_RDONLY) = 3
4423  open("/lib/libkeyutils.so.1", O_RDONLY) = 3
4423  open("/lib/libpthread.so.0", O_RDONLY) = 3
4423  open("/lib/libselinux.so.1", O_RDONLY) = 3
4423  statfs64("/selinux", 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=2711275, f_bfree=2380713, f_bavail=2242985, f_files=689520, f_ffree=642048, f_fsid={-1727257207, 1632688387}, f_namelen=255, f_frsize=4096}) = 0
4423  open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3
4423  getcwd("/var/www/vhosts/vhosts/user/mysite.co.uk/web", 4096) = 45
4423  open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
4423  open("/etc/localtime", O_RDONLY)  = 3
4423  lstat64("/usr/local/sbin/php", 0xbfe43dec) = -1 ENOENT (No such file or directory)
4423  lstat64("/usr/local/bin/php", 0xbfe43dec) = -1 ENOENT (No such file or directory)
4423  lstat64("/sbin/php", 0xbfe43dec)  = -1 ENOENT (No such file or directory)
4423  lstat64("/bin/php", 0xbfe43dec)   = -1 ENOENT (No such file or directory)
4423  lstat64("/usr/sbin/php", 0xbfe43dec) = -1 ENOENT (No such file or directory)
4423  lstat64("/usr/bin/php", {st_mode=S_IFREG|0755, st_size=3281860, ...}) = 0
4423  lstat64("/usr/bin", {st_mode=S_IFDIR|0555, st_size=20480, ...}) = 0
4423  lstat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
4423  access("/usr/bin/php", X_OK)      = 0
4423  open("/usr/bin/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
4423  open("/etc/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
4423  open("/usr/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
4423  open("/etc/php.ini", O_RDONLY)    = 3
4423  lstat64("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69109, ...}) = 0
4423  lstat64("/etc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
4423  open("/etc/php.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
4423  stat64("/etc/php.d/curl.ini", {st_mode=S_IFREG|0644, st_size=49, ...}) = 0
4423  open("/etc/php.d/curl.ini", O_RDONLY) = 3
4423  stat64("/etc/php.d/fileinfo.ini", {st_mode=S_IFREG|0644, st_size=57, ...}) = 0
4423  open("/etc/php.d/fileinfo.ini", O_RDONLY) = 3
4423  stat64("/etc/php.d/json.ini", {st_mode=S_IFREG|0644, st_size=49, ...}) = 0
4423  open("/etc/php.d/json.ini", O_RDONLY) = 3
4423  stat64("/etc/php.d/phar.ini", {st_mode=S_IFREG|0644, st_size=49, ...}) = 0
4423  open("/etc/php.d/phar.ini", O_RDONLY) = 3
4423  stat64("/etc/php.d/zip.ini", {st_mode=S_IFREG|0644, st_size=47, ...}) = 0
4423  open("/etc/php.d/zip.ini", O_RDONLY) = 3
4423  open("/usr/lib/php/modules/curl.so", O_RDONLY) = 3
4423  open("/etc/ld.so.cache", O_RDONLY) = 3
4423  open("/usr/lib/libcurl.so.4", O_RDONLY) = 3
4423  open("/lib/libidn.so.11", O_RDONLY) = 3
4423  open("/usr/lib/libldap-2.4.so.2", O_RDONLY) = 3
4423  open("/lib/librt.so.1", O_RDONLY) = 3
4423  open("/usr/lib/libssl3.so", O_RDONLY) = 3
4423  open("/usr/lib/libsmime3.so", O_RDONLY) = 3
4423  open("/usr/lib/libnss3.so", O_RDONLY) = 3
4423  open("/usr/lib/libnssutil3.so", O_RDONLY) = 3
4423  open("/lib/libplds4.so", O_RDONLY) = 3
4423  open("/lib/libplc4.so", O_RDONLY) = 3
4423  open("/lib/libnspr4.so", O_RDONLY) = 3
4423  open("/usr/lib/libssh2.so.1", O_RDONLY) = 3
4423  open("/usr/lib/liblber-2.4.so.2", O_RDONLY) = 3
4423  open("/usr/lib/libsasl2.so.2", O_RDONLY) = 3
4423  open("/usr/lib/php/modules/fileinfo.so", O_RDONLY) = 3
4423  open("/usr/lib/php/modules/json.so", O_RDONLY) = 3
4423  open("/usr/lib/php/modules/phar.so", O_RDONLY) = 3
4423  open("/usr/lib/php/modules/zip.so", O_RDONLY) = 3
4423  open("/proc/sys/crypto/fips_enabled", O_RDONLY) = 3
4423  stat64("/root/.terminfo", 0xbfe454b0) = -1 ENOENT (No such file or directory)
4423  stat64("/etc/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
4423  access("/etc/terminfo/l/linux", R_OK) = -1 ENOENT (No such file or directory)
4423  stat64("/usr/share/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
4423  access("/usr/share/terminfo/l/linux", R_OK) = 0
4423  open("/usr/share/terminfo/l/linux", O_RDONLY|O_LARGEFILE) = 3
4423  open("/root/.editrc", O_RDONLY)   = -1 ENOENT (No such file or directory)
4423  open("/etc/nsswitch.conf", O_RDONLY) = 3
4423  open("/etc/ld.so.cache", O_RDONLY) = 3
4423  open("/lib/libnss_files.so.2", O_RDONLY) = 3
4423  open("/etc/protocols", O_RDONLY|O_CLOEXEC) = 3
4423  open("/etc/protocols", O_RDONLY|O_CLOEXEC) = 3
4423  open("test.php", O_RDONLY)        = 3
4423  getcwd("/var/www/vhosts/vhosts/user/mysite.co.uk/web", 4096) = 45
4423  lstat64("/var/www/vhosts/vhosts/user/mysite.co.uk/web/test.php", {st_mode=S_IFREG|0777, st_size=10, ...}) = 0
4423  lstat64("/var/www/vhosts/vhosts/user/mysite.co.uk/web", {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0
4423  lstat64("/var/www/vhosts/vhosts/user/mysite.co.uk", {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0
4423  lstat64("/var/www/vhosts/vhosts/user", {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0
4423  lstat64("/var/www/vhosts/vhosts", {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0
4423  lstat64("/var/www/vhosts", {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0
4423  lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
4423  lstat64("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0

Затем выполнение прерывается той же ошибкой, что и раньше (Неустранимая ошибка PHP: и т. Д.).

Решено добавлением "noserverino" в параметры монтирования

Если ты можешь бежать тот же самый PHP-файл из интерфейса командной строки при копировании в локальное хранилище файлов, тогда я бы подумал, что это может быть проблема безопасности SELinux.

Попробуйте поискать в сообщениях уведомления SELinux или просто временно отключить их. У нас было много проблем (пока мы не выяснили это) даже в локальной файловой системе с файлами, доступ к которым SELinux блокировал.

Вы уверены, что test.php включают test.php? Это может привести к неприятным результатам.