Функция PHP is_executable возвращает false, хотя файл определенно исполняемый - PullRequest
1 голос
/ 18 ноября 2010

Я использую PHP 5.3.

При использовании getfacl права доступа к файлам:

user::rwx
group::r-x
other::r-x

У меня также возникают проблемы с использованием функций выполнения программ PHP, http://www.php.net/manual/en/ref.exec.php

Рассматриваемая программа - wkhtmltopdf, и она находится в моей директории / usr / bin.

У меня есть программа конвертации в моем каталоге / usr / bin с точно такими же разрешениями, и функция is_executable возвращает true.

Ответы [ 2 ]

5 голосов
/ 08 августа 2011

Для меня ответом было создать модуль политики, позволяющий запускать wkhtmltopdf без отключения SELinux:

  1. sudo su - (запустить от имени пользователя root, чтобы упростить следующие шаги)
  2. tail -F /var/log/audit.log | grep wkhtml > wkhtml.audit (оставьте это запущенным и переходите к следующему шагу)
  3. попробуйте загрузить вашу веб-страницу, которая пытается создать PDF-файл, она потерпит неудачу, как и раньше, но теперь мы регистрируем.
  4. CTRL + C, чтобы остановить процесс с шага 2 (может перейти к 7, если вы спешите, но настоятельно рекомендуется использовать эти шаги проверки, прежде чем сделать исключения selinux постоянными!)
  5. cat wkhtml.audit | audit2allow -m wkhtmltopdf > wkhtmltopdf.te
  6. просмотрите файл wkhtmltopdf.te, чтобы убедиться, что новые правила будут разумными.вы, вероятно, увидите «разрешить httpd_t self: process execmem» и, возможно, «разрешить httpd_t var_t: file read» в зависимости от настроек
  7. cat wkhtml.audit | audit2allow -M wkhtmltopdf
  8. semodule -i wkhtmltopdf.pp (может занять минуту,наберитесь терпения)

Теперь вы сможете загрузить страницу создания PDF без ошибок.Если нет, то мы, вероятно, исправили одну проблему и пришли к другой - возможно, придется повторить шаги.Прибегните к wkhtml.audit2 на этот раз и добавьте его к оригиналу при создании нового модуля (иначе вы будете отменять первое исправление!):

tail -F ... > wkhtml.audit2

, если aud2 пустесть проблема не-selinux.в противном случае:

cat wkhtml.audit wkhtml.audit2 | audit2allow ...

0 голосов
/ 19 ноября 2010

После некоторых исследований я решил это.Проблема была в политиках selinux, стоящих на пути.Я использовал контекст безопасности из / usr / bin / convert и использовал команду chcon, чтобы применить тот же контекст безопасности к / usr / bin / wkhtmltopdf

...