2012-04-10 24 views
15

Ho un programma di posta elettronica che gira ogni giorno sulla pagina php usando i cron job. Il codice php funziona bene quando eseguo la pagina utilizzando un collegamento.come eseguire il file php usando i job cron

Ora, quando eseguo lo script php utilizzando cron job, funziona anche bene, ma quando inserisco qualche query i lavori di cron non capiranno il collegamento.

ad esempio: http://www.wetube.org/cron.php?id=01001 così ora se provo a eseguire questo ogni giorno utilizzando il cron job non funziona.

Ma se cancelliamo la query, funziona correttamente. Ragazzi, conoscete qualche codice che faccia funzionare questo collegamento nel cron job?

+0

Che cosa significa "metti una domanda"? Inoltre, cosa hai messo come comando per il cron-job? –

risposta

36

Cron esegue i comandi come se fossero eseguiti tramite la shell, quindi l'esecuzione di PHP utilizza i percorsi locali.

È necessario utilizzare un comando come:

php /home/USER/public_html/cron.php

O se tra cui la stringa di query è necessario, usare curl invece (se è installato):

curl http://www.wetube.org/cron.php?id=01001

Potrebbero vuoi guardare non esponendo i tuoi script di cron a internet - spostali all'esterno della tua directory web perché se qualcuno lo trova può ricaricarlo continuamente per inviare spam ai tuoi script di cron (cioè mandare l ots di e-mail)

+0

grazie man ma cosa posso aggiungere per impedire l'invio di report –

+4

Se devi eseguire lo script tramite HTTP (che in genere è una cattiva idea in primo luogo) e il tuo server ha un indirizzo IP statico (e dedicato) puoi limitare l'accesso a venire solo dal tuo server racchiudendo lo script cron in un controllo condizionale che il '$ _SERVER ['REMOTE_HOST']' corrisponda all'indirizzo IP del tuo server. Questo non è infallibile e la tua scommessa più sicura è semplicemente avere lo script cron fuori dalla tua directory web. – wyqydsyq

7

vorrei aggiungere hash come

curl http://www.wetube.org/cron.php?id=01001&hash=cm349ucKuc023b2ynGyv23ycr23 

e nel file php

if(isset($_GET['hash']) && $_GET['hash']=='cm349ucKuc023b2ynGyv23ycr23'){ 
.... 
stuff to do 
.... 
} 

* si può anche aggiungere specifico controllo ora/data in cui deve essere eseguito.
* è possibile controllare IP
* generare sha512 (mi sento di raccomandare) gli hash in cron e php con lo stesso sale e forse anche il tempo e poi verificare se sono uguali - sarebbe impossibile per un hacker ricreare it - eccetto se in qualche modo ottiene la tua configurazione di hash originale