No sé por qué, pero cuando intento ejecutar un comando, el cual se puede ejecutar desde cualkier lugar x estar dentro del PATH, no me lo ejecuta a menos q el ejecutable en cuestión esté en la misma carpeta q el script php.
En mi caso se trata de creación de usuarios y manejo de permisos a través de los ejecutables 'cacls' y 'net user' con sus parámetros correspondientes (Cluster, con esto consigo crear usuarios virtuales y poner permisos a las carpetas para el acceso via FTP x el q pregunté en otro tema).
Aún usando la ruta absoluta (C:\Windows\system32) como relativa mediante ../ (también he probado con \) y dándole permisos a los ejecutables al usuario q se autentifica en el sitio web no hay manera de q lo ejecute a menos q sitúe el archivo en la misma carpeta.
Aquí va el código q empleo:
Código PHP:
<?php
echo "Inicia el proceso:<br>";
$rootftp='c:/inetpub/ftproot';
$systemroot='c:/windows/system32';
$app_users="net user";
$app_perms="cacls.exe";
//Voy a obtener la lista de permisos de la carpeta especificada
echo "<br>Obteniendo lista de permisos de la carpeta <strong>$rootftp</strong>:<br>";
$ruta="$systemroot/$app_perms";
if (file_exists ($ruta)) {
echo "El archivo $ruta esta disponible...<br>";
if($resultado=trim(shell_exec ("$ruta $rootftp"))) {
echo "<pre>$resultado</pre><br>";
} else {
echo "No pudo ejecutarse el comando $ruta $rootftp.<br>";
}
echo "Segunda prueba:<br>";
if ($resultado=system("$ruta $rootftp",$retval)) {
echo "Ultima linea: $resultado<br>Retorno: $retval<br>";
}else {
echo "No pudo ejecutarse el comando $ruta $rootftp.<br>";
}
} else {
echo "No se encontro el archivo $ruta<br>";
}
echo "<br>Fin del proceso.";
?>
Saludos.