not - php exec vs passthru
código de error de comando ilegal 127 en la función de php exec (6)
Estoy usando este código php:
exec("unrar e file.rar",$ret,$code);
y obtener un código de error de comando ilegal, es decir, 127 ... pero cuando estoy usando este comando a través de ssh funciona ... porque unrar está instalado en el servidor ... ¿alguien puede adivinar por qué el ejecutivo no está haciendo lo correcto?
Gracias a todos por su respuesta!
Intenté esto
//somedir is inside the directory where php file is
chdir("somedir");
exec("/home/username/bin/unrar e /home/path/to/dir/file.rar");
y ahora no devolvió ningún código de salida ... mis comandos están haciendo archivo ... probé mkdir etc. ..: s
Intente usar la ruta directa de la aplicación (/ usr / bin / unrar de lo que sea), parece que php no puede encontrar la aplicación.
ohkiee guyz thanx ... y sí, puede haber algunos errores con $ PATH ... pero con el camino completo dado está funcionando :)
exec("/home/user/bin/unrar e /home/user/xxx/yyy/file.rar");
Si tiene chrooted apache y php, también querrá poner / bin / sh en el entorno chrooted. De lo contrario, exec () o passthru () no funcionarán correctamente y producirán el código de error 127, archivo no encontrado.
Por si acaso alguien más sigue teniendo este problema, eche un vistazo a la publicación aquí:
http://gallery.menalto.com/node/2639#comment-8638
Citar:
Encontré el problema. El problema fue mi seguridad paranoica en OpenBSD. Al actualizar de 3.1 a 3.2, agregaron:
- Apache se ejecuta chroot''d de manera predeterminada. Para desactivar esto, vea la nueva opción -u.
El chroot impidió que Apache accediera a nada fuera de un directorio, así que moví todo al directorio de apache, incluido netpbm. Todo era accesible y ejecutable, pero creo que todavía estaba en una especie de "modo seguro" porque el ejecutor () siempre devolvía 127.
De todos modos, la ejecución de httpd con la opción -u se remonta al inicio de Apache no chroot''d menos seguro, lo que permitió que el ejecutor () volviera a funcionar.
Dado que esto aparece como una de las principales respuestas en Google, quería compartir mi solución:
La solución simple que tuve fue desactivar safe_mode en el archivo php.ini
; Safe Mode
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode
safe_mode = Off