PHP shell exec, отказано в разрешении на выполнение - скрипт оболочки rwxrwxrwx


В настоящее время я использую ssh в удаленной системе CentOS 5.6, в которой работает веб-сервер Apache. Мне нужно использовать двоичный файл poppler pdftohtml, который, к сожалению, в настоящее время не установлен на этой машине. Поэтому я скачал пакет poppler и создал его в своей папке пользователя. Поскольку я не являюсь системным администратором, я не делал

make install

И у меня есть все мои скомпилированные файлы под

/users/myfolder/poppler-0.18.2/

Файл, который мне нужно выполнить через php shell_exec(), это

/users/myfolder/poppler-0.18.2/utils/pdftohtml

Если я его выполню через мой ssh bash я получаю правильный вывод. Если бы я вместо этого поместил эту строку в php-скрипт:

echo shell_exec("/users/myfolder/poppler-0.18.2/utils/pdftohtml");

Я получаю следующий результат:

sh: /users/myfolder/poppler-0.18.2/utils/pdftohtml: Permission denied

Я попытался установить 777 разрешений для файлов, которые в настоящее время являются -rwxrwxrwx. Я также заметил, что использование shell_exec("whoami"); приводит к "apache". Разве apache не должен иметь возможность выполнить сценарий, если права доступа к файлам - rwxrwxrwx?

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

Спасибо всем, кто поможет!

Author: Andrea Sprega, 2011-12-29

1 answers

То, что файл является исполняемым для пользователя, не означает, что пользователь действительно может выполнить файл. Пользователь также должен иметь возможность "получить доступ" к файлу: пользователю требуется разрешение на выполнение для всех "родительских каталогов", в вашем случае для /users, myfolder, poppler-0.18.2 и utils.

Предполагая, что /пользователи - это та же базовая вещь, что и /home, у всех должно быть +x на этом. Оттуда вы можете установить его: просто сделайте chmod o+x /users/myfolder /users/myfolder/poppler-0.18.2 /users/myfolder/poppler-0.18.2/utils

(Примечание: Это позволит все должны выполнить этот двоичный файл, а не только Apache.)

Если пользователь apache и вы разделяете группу, было бы лучше использовать каталог poppler и все, что принадлежит этой группе, и установить g+x вместо o+x.

 8
Author: Jory Geerts, 2011-12-29 13:50:24