Befehle funktionieren im Terminal/Putty aber nicht mit exec()

05/03/2017 15:10 Nonilol#1
Habe gerade ein kleines Problem in PHP:

Ich habe shhavel's facerec ([Only registered and activated users can see links. Click Here To Register...]) auf meinem VPS installiert (Ubuntu 14.04.5) und es funktioniert ohne Probleme wenn ich es in Putty nutze:

Code:
facerec list
jenniferlawrence
emmawatson

Nutze ich allerdings in PHP die exec()-Funktion, dann funktioniert lediglich noch die Hilfe (facerec -help) alles andere Produziert folgenden Error:

facerec list 2>&1

Code:
Traceback (most recent call last):
File "/usr/local/bin/facerec", line 359, in 
sys.exit(__main__())
File "/usr/local/bin/facerec", line 356, in __main__
return args.func(args)
File "/usr/local/bin/facerec", line 159, in list
for subject in os.listdir(subjects_directory):
OSError: [Errno 2] No such file or directory: './subjects'

Mein PHP script:

PHP Code:
exec('facerec list 2>&1'$output);
foreach(
$output as $string) {
    echo 
$string."<br>";


Jemand eine Idee was ich da tun kann um es zum Laufen zu bekommen?
05/03/2017 15:19 Shawak#2
Kann sein dass dein workdir falsch gesetzt ist? Was für einen Output bekommst du mit "ls"?
05/03/2017 15:57 Devsome#3
#moved
05/04/2017 21:59 Nonilol#4
Quote:
Originally Posted by Shawak View Post
Kann sein dass dein workdir falsch gesetzt ist? Was für einen Output bekommst du mit "ls"?
Shit sorry diggi, als ich hier gestern nochmal reingeschaut habe, habe ich irgendwie nur das "#moved" gesehen :( Danke dir für deinen Hilfeversuch! :)

Problem habe ich gefunden:
Die subjects-folder lag in /root/ wo der PHP Skript natürlich keine Zugriffsberechtigung hat.

Gelöst habe ich es, indem ich open_basedir in den PHP settings zu none geändert. War in meinem Fall nicht so wichtig dass eine saubere Lösung daherkommt.

Hübscher wäre wohl gewesen, einfach shhavel/facerec für den PHP-user zu installieren (vermutlich apache oder so und eben nicht als "root") oder alternativ die subjects-folder zu verschieben und den Python-Skript dementsprechend anzupassen.