2010-11-26 11 views
5

Tengo este archivo script.php que quiero ejecutar como un trabajo cron en mi servidor linux/apache.Ejecutar un script.php en el trabajo cron en el servidor linux/apache pero restringir el acceso público al archivo php

Sin embargo, no quiero que el público acceda a www.mycompanyname.com/script.php y ejecute el script al mismo tiempo.

¿Cómo podemos prevenir eso? ¿Cómo podemos restringir la secuencia de comandos al acceso del servidor solamente? ¿Está utilizando chmod o está configurando algo dentro del archivo .htaccess, algo a lo largo de la línea?

¿Algún consejo?

Respuesta

2

Es probable que tenga algo así como un directorio public_html, en el que tiene todos los phps. Solo ponlo fuera de ese directorio.

+0

ohh, suena lógico en el que nunca pensé ... probablemente me olvidé del public_html es la raíz asignada al nombre de host en lugar de los directorios externos. Como mi script.php requiere que apache se ejecute, supongo que el directorio fuera de public_html todavía se puede ejecutar. – flyclassic

+0

¡Claro! solo necesitas permiso para tu usuario en el directorio (supongo que el cron se ejecuta como tu usuario) – cambraca

7

Puede hacer esto como la primera línea de PHP en script.php ...

if (PHP_SAPI !== 'cli') { 
    exit; 
} 

Si alguien golpea la secuencia de comandos a través de HTTP, el PHP_SAPI habrá cgi creo, y no cli, causando que el script salir enseguida

Por supuesto, esto depende de que su cron llame al php script.php.

También podría enviar ...

header('HTTP/1.0 404 Not Found'); 

... o, por supuesto, dejarlo fuera de su raíz web.

6

Si coloca la secuencia de comandos fuera de la carpeta webroot, no podrá acceder a ella a través de su servidor web. p. su webroot está en/var/www/public_html/ coloca el script.php fuera de esa carpeta, por ejemplo:/var/www/

Cuestiones relacionadas