2010-10-22 8 views
5

Come ottenere $ base_url per mostrare l'url corretto per il mio sito Drupal quando eseguo un cron job? Devo impostare il $ base_url globale manualmente affinché ciò accada? Devo eseguire il cron job come utente registrato?

Quando eseguo mysite.com/cron.php a mano tutto sembra funzionare correttamente: $ base_url è impostato sull'URL corretto. Tuttavia, quando eseguo un comando simile tramite cron o drush, $ base_url è impostato su un generico "http: // default".

La cosa divertente è che quando eseguo cron manualmente come utente registrato da Drupal (usando devel, per esempio), $ base_url allontana i punti all'ur destro.

Qualche suggerimento?

Grazie in anticipo,

Leo

risposta

0

Diamo dovrebbe camminare trogolo diverse possibili cause:

  • wget, curl o la lince non esistono sul server. Prova a eseguire questi comandi a mano, il tuo sistema operativo ti dirà se i programmi non sono disponibili. Soluzione: rendili disponibili, installali o chiedi al tuo amministratore di sistema di renderli disponibili o installarli.
  • wget, arricciatura e simili non possono connettersi al mondo esterno. Chiama a mano l'intero comando cron, ma _ assicurati di omettere i parametri --silent o --quit, vuoi ottenere informazioni dettagliate. Buona possibilità che alcuni firewall stiano bloccando la connessione dall'interno all'esterno. Molti sistemi ben protetti fanno. Soldione: contatta il tuo amministratore di sistema per disattivare il firewall.
  • Nessuno può collegare o eseguire il tuo cron.php. Tu già fai notare, non è così, ma per riferimento futuro: molti server hanno bloccato cron.php per essere eseguito da "solo chiunque". Puoi scoprirlo chiamando cron.php e controllando il watchdog (Drupal »Admin» Registri »Eventi recenti). Dovrebbe essere presente una registrazione che dice che cron è stato eseguito. Soluzione: scopri come il cron.php è bloccato da "solo chiunque", spesso questo è un record nella configurazione .htaccess o apache, spesso è un firewall. Disabilita quello per il tuo IP o client richiesto.
+0

Ciao berchi, grazie per il tuo messaggio! Sfortunatamente, non penso che la mia domanda sia stata precisa. Cron sta andando bene. Ma non sta inizializzando $ base_ulr. Vuoi qualche suggerimento? –

+0

stai dicendo che se fai il cron a mano, $ base_url è impostato correttamente, ma se lo fai sparire attraverso il server (riga di comando) non lo è? – berkes

6

Il cron è probabilmente impostato errato.

È possibile utilizzare wget o curl, che è in pratica lo stesso di esecuzione del cron "a mano". Qualcosa di simile a questo:

5 * * * * wget http://example.com/cron.php 

Probabilmente si sta utilizzando drupal.sh, che sostiene che si dovrebbe usare "http:. //default/cron.php come l'URI" Questo interromperà la gestione di $ base_url. Il seguente potrebbe funzionare con drupal.sh.

5 * * * * /path/to/drupal.sh --root /home/site/public_html/ http://example.com/cron.php 

Quando si utilizza Drush, potrebbe essere necessario fornire l'argomento --uri:

drush --uri=http://example.com cron 

Si potrebbe anche solo impostare la variabile $ base_url in settings.php (che è un modo perfettamente valido per fallo, non un hack).