Comando UNIX desde PHP

Buenas he visto que más abajo hay un trhread comentando algo similar, pero no me ha servido.
El tema es que hace unos días arme un servidor de respaldo en casa a pedido de mi viejo. Esta todo perfecto, pero le molesta tener que usar SSH para apagarlo remotamente (es windowsero de alma, quiere todo fácil). Por ende ejecutó su programa preferido "jodamos a Ramiro que esta al pedo seguro", y me pidió algo más facilito para apagar el sevidor.
Ahí nomas se me vino averiguar si PHP ejecutaba comandos de Linux, al igual que C y otros tantos lenguajes.
Entonces mi idea fue, alojar un script php que al acceder mediante el navegador web apague la computadora.
Por lo que armé lo siguiente:

<?php
echo "Se va a apagar...";
$shell = shell_exec('sudo /sbin/shutdown -h now');
?>

Y como el servidor no tiene Apache aún, lo decidí probar en mi laptop. Pero al ejecutar el script desde el navegador, si bien carga e imprime el echo, no apaga.
Agregué la excepción en sudoers para no tener que ingresar password para correr shutdown.
En que le estoy pifiando ?. Agradezco cualquier consejo.
Saludos y gracias.

Sacado de PHP.NET sobre la funcion shell_exec:

"This function is disabled when PHP is running in safe mode."

Echa un vistazo a ver si por ahi...

Otra cosa que siempre conviene hacer cuando aparecen estos problemas, es habilitar los logs del php / apache / etc y ver que dicen los logs. Las aplicaciones hablan, el tema es aprender a escucharlas.

Gracias por las respuestas. He intentado realizar lo que me sugirieron, acá describo la experiencia:
Las modificaciones que hice dentro de /etc/php5/apache2/php.ini son las siguientes:

Citar

; Safe Mode
; http://php.net/safe-mode

safe_mode = Off

; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
; it could be very dangerous in production environments. Depending on the code
; which is triggering the error, sensitive information could potentially leak
; out of your application such as database usernames and passwords or worse.
; It's recommended that errors be logged on production servers rather than
; having the errors sent to STDOUT.
; Possible Values:
; Off = Do not display any errors
; stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
; On or stdout = Display errors to STDOUT
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/display-errors

display_errors = Off

; Besides displaying errors, PHP can also log errors to locations such as a
; server-specific log, STDERR, or a location specified by the error_log
; directive found below. While errors should not be displayed on productions
; servers they should still be monitored and logging is a great way to do that.
; Default Value: Off
; Development Value: On
; Production Value: On
; http://php.net/log-errors

log_errors = On

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:

error_log = /var/log/php_errors.log

Apliqué permisos a /var/log/php_errors.log con:

Citar

sudo chown www-data /var/log/php_errors.log
sudo chmod 777 /var/log/php_errors.log

En muchos artículos webs decían que en vez de www-data iba apache, y en otros www-data. Yo no tengo el grupo Apache :S por ende deje www-data que si lo tengo.

Volví a ejecutar el script, que funciona como hasta ayer y en /var/log/php_errors.log no hay ningún registro.
Saludos.

NOTA: Hay comandos como el "ls" que se ejecutan bien desde PHP.

suponiendo que el usuario sea www-data, prueba con:

exec("echo 'www-data' | /usr/sbin/shutdown -h now");

de todas maneras es dudoso que funcione si el usuario www-data no tiene permisos para apagar la maquina

Si tiene permisos y se resiste, entonces se puede probar un fichero bash (apagar.sh) dentro del espacio web con la orden de shutdown, y ejecutar shell_exec("apagar.sh". El fochero con propietario a www-data, con permisos de ejecucion (0755) y ese usuario www-data debe tener permisos para apagar.

saludos,

Instala el siguiente paquete:

sudo aptitude install php5-cli

Edita las variables de php.ini

sudo nano /etc/php5/cli/php.ini

Y ya podrás ejecutar:

php5 fichero.php

shell_exec, system, exec
Con cualquiera de estar funciones puedes ejecutar comandos de consola en el servidor dónde este alojado el script, hay que tener en cuenta de que es necesario tener desactivado el safe_mode en el php.ini