2010-11-18 9 views
1

Ich benutze PHP 5.3.PHP-Funktion is_executable gibt false zurück, obwohl die Datei definitiv ausführbar ist

die Dateien Berechtigungen Mit getfacl sind:

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

I http://www.php.net/manual/en/ref.exec.php

Das fragliche Programm ist wkhtmltopdf und ich habe es in meinem/usr/bin auch Funktionen zur Programmausführung Probleme bei der Verwendung von PHP habe Verzeichnis.

Ich habe das Konvertierungsprogramm in meinem/usr/bin-Verzeichnis mit genau den gleichen Berechtigungen und die is_executable-Funktion gibt true zurück.

+0

Können Sie den genauen Code bereitzustellen, der false zurückgibt? – Mikhail

+0

Hat 'is_file ($ file)' auf die eine, die nicht ausführbar kehrt wahr ?, vielleicht haben Sie den Namen ... – acm

+0

Antwort

0

Nach einigen Recherchen habe ich das gelöst. Das Problem waren Selinux-Richtlinien, die im Weg standen. Ich verwendete den Sicherheitskontext von/usr/bin/convert und verwendete den Befehl chcon, um den gleichen Sicherheitskontext auf/usr/bin/wkhtmltopdf anzuwenden.

5

Für mich bestand die Antwort darin, ein Richtlinienmodul zu erstellen, damit wkhtmltopdf ohne ausgeführt werden konnte deaktivieren SELinux:

  1. sudo su - (als root laufen die nächsten Schritte einfacher zu machen)
  2. tail -F /var/log/audit.log | grep wkhtml > wkhtml.audit (lassen dieses Lauf und weiter zum nächsten Schritt)
  3. try Ihre Web-Seite zu laden, die eine erstellen versucht pdf, es wird wie bisher versagen, aber jetzt sind wir Protokollierung.
  4. STRG + C, um den Prozess von Schritt 2 zu stoppen (kann bis 7, wenn in Eile, überspringen, aber es wird dringend empfohlen, dass Sie diese Kritik Schritte aus, bevor selinux Ausnahmen permanent zu machen!)
  5. cat wkhtml.audit | audit2allow -m wkhtmltopdf > wkhtmltopdf.te
  6. Überprüfen Sie die wkhtmltopdf.te-Datei auf stellen Sie sicher, dass neue Regeln sinnvoll sind. und möglicherweise "httpd_t var_t erlauben: Datei lesen": Sie wahrscheinlich "Prozess execmem erlauben httpd_t Selbst" sehen
  7. cat wkhtml.audit | audit2allow -M wkhtmltopdf
  8. semodule -i wkhtmltopdf.pp (vielleicht eine Minute dauern, Geduld)
je nach Setup

Sie sollten nun in der Lage sein, die PDF-Erstellungsseite fehlerfrei zu laden. Wenn nicht, haben wir wahrscheinlich ein Problem behoben und sind zu einem anderen gekommen - müssen möglicherweise Schritte wiederholen. Tail wkhtml.audit2 diese Zeit und Katze es mit dem Original, wenn ein neues Modul zu machen (oder sonst werden Sie erste Fix werden rückgängig gemacht!):

tail -F ... > wkhtml.audit2

wenn audit2 leer ist, gibt es eine nicht Selinux Problem. ansonsten:

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