Como se dijo anteriormente, $ _SERVER no está presente cuando se ejecuta PHP a través de php-cli.
Sin embargo, hay una opción para ejecutar sus scripts cron'd en php-cgi, donde tendrá $ _SERVER. Si se enrolla en un servidor web local, entonces $ _SERVER se completará.
$ cat /etc/cron.daily/mydailyphpwork
/usr/bin/curl http://domain.tld/path/to/cron-script.php &> /dev/null
Sin embargo, creo que debe de hecho seguir con las soluciones propuestas por TimWolla o Dervo, a menos que realmente necesita este comportamiento.
Pros:
- Usted recibirá todos los $ _SERVER variables establecidas como se esperaba.
- Si necesita reescribir una gran cantidad de código con if-else esto puede ser preferible ya que no necesita cambiar ningún código.
Contras:
- Es una especie de solución y probablemente significa un ligero aumento de la carga de la CPU.
sírvase citar algunos de mensajes de error de algún tipo. Tal vez $ _SERVER ['HTTP_HOST'] undefined debido a la secuencia de comandos cron no está definiendo ningún HTTP_HOST, como lo hacen los navegadores? Puede probarlo con isset ($ _ SERVER ['HTTP_HOST']) –
php> = 5.3.0 use gethostname() – nick