Ich habe eine design tool extension, die auf einer Website verwendet wird, an der ich arbeite. Das Design-Tool verwendet die inkscape Befehlszeile zum Exportieren von Bildern. Es gibt eine PHP-Schnittstelle, um mit den Befehlszeilenoperationen zu arbeiten, die letztendlich aufrufen. Nachdem ich festgestellt hatte, dass die Bilddateien nicht exportiert wurden, habe ich ein paar Tests zum Debuggen erstellt. Ich habe die auszuführen Linie shell_exec($inkscapeCmd . ' 2>&1')
um die Fehlermeldung zu sehen:Inkscape in PHP kann nicht ausgeführt werden shell_exec() Befehl
sh: inkscape: command not found
... was merkwürdig ist, da es auf jeden Fall installiert ist und zugänglich. Ich habe einen Scheck für den Benutzer auf meiner Testseite, um sicherzustellen, die Befehle von einem Benutzer mit Zugriff auf inkscape ausgeführt wurden:
$processUser = posix_getpwuid(posix_geteuid()); echo 'user: ' . $processUser['name'];
Dann habe ich in den Server ssh'd, um zu bestätigen, dass ich laufen konnte die gleichen Befehle wie dieser Benutzer, und konnte sie ohne Probleme ausführen (was auch bestätigt, inkscape war im PATH). Ich bin in der Lage ohne Probleme andere, grundlegende Shell-Befehle von PHP zu laufen, etwa so:
echo shell_exec('ls');
Aber jetzt ich ratlos bin; Ich bin mir nicht sicher, was ich sonst noch überprüfen sollte, um herauszufinden, warum ich den Fehler 'Befehl nicht gefunden' bekomme. Jede Richtung wäre hilfreich.
Der Server (und nicht alt, ich weiß):
- CentOS 6.7
- PHP 5.3.3
- Inkscape v0.47
Warum wird dies abgelehnt? Ich dachte, ich hätte eine vernünftige Frage gestellt und letztendlich die Antwort bekommen, nach der ich gesucht habe. Das Design-Tool benötigte den Pfad zur ausführbaren Datei (es wurde in einer Konfigurationsdatei falsch definiert). – spencerready