2009-06-26 4 views
0
echo system("/usr/bin/whoami", $ret); 
echo $ret; 

PHP 4.3.9 auf Apache 2.0.52, CentOS 4.5. Der abgesicherte Modus ist ausgeschaltet, I-Programme wie der Apache-Benutzerkonto von der Kommandozeile ausgeführt werden können, aber alle Programme von PHP laufen nicht mit Exit-Code 127.PHP-Aufrufe an externe Programme schlagen alle mit Exit-Code fehl 127

+0

Haben Sie versucht, php mywhoami.php von CLI aufrufen? Sie greifen wahrscheinlich über den Browser darauf zu. Für mich funktioniert es in beide Richtungen. – GrGr

+1

Die Shell (system() verwendet "/ bin/sh -c ...") kehrt mit dem Exitcode 127 zurück, wenn sie den auszuführenden Befehl nicht finden kann. –

Antwort

1
  • Sehen Sie, wenn /usr/bin/whoami existiert und ausführbar ist (und gut lesbar, Modus xx5) von jedem.
  • Siehe php.ini auf doc_root und user_dir, wenn diese gesetzt sind, können sie begrenzen, was Sie ausführen können.
  • Wenn Ihr Apache oder PHP chrooted ist, müssen Sie die Anwendung in die chroot ausführen.
  • Wenn ein anderes Sicherheitssystem oder RBAC auf dem Computer ausgeführt wird, siehe dmesg oder Protokolldateien in /var/log/.
  • Vergessen Sie nicht, &$ret statt $ret zu verwenden.
  • Siehe PHP exec() und passthru(), verschiedene Funktionen könnten für verschiedene Situationen funktionieren.
  • Wissen, dass es eine andere php.ini für Apache gibt, und eine andere für CLI verwenden.
Verwandte Themen