Newsgroup: it.comp.www.php
Titolo: Eseguire un file.php con Crontab?

Gugoleggiando qua e la sto provando a far eseguire dal mio server (su
cui entro come root) un file php.
Il file si trova su /home/dir/file_da_eseguire.php
Nella stessa dir del file ho creato un file cron.sh (permessi -rwxr-xr-
x) con questo contenuto:
#!/bin/sh
php /home/dir/file_da_eseguire.php
Poi ho inserito (crontab -e) la seguente riga nel crontab:
* * * * * /home/dir/cron.sh
...e mi aspettavo che ogni minuto venisse eseguito il mio file.
NIENTE!!!
Dove sbaglio?
Come posso risolvere?
Tnx

Ho chiesto anche su altri forum ma non sono ancora riuscito a
risolvere :(((((

ricc ha scritto:

Prova cosě (tutto su una riga, direttamente nel crontab):
* * * * * /usr/bin/php /home/dir/file_da_eseguire.php &> /tmp/php_check.log
e vedi se scrive qualcosa.
Andrea

 NIENTE!!!
niente significa che non viene eseguito o che da un errore?
se lo esegui in questo modo non potrai mai saperlo, redirigi su file
stdout e stderr, forse ti dicono qualcosa
-- 
Web marketing & community management:
http://www.insistema.com/

 stdout e stderr, forse ti dicono qualcosa
Mi puoi dare un paio di info in più su come vedere "il log" del
crontab? Come funzionano questi comandi?

 crontab? Come funzionano questi comandi?
non devi vedere il log del crontab, ma quello del tuo script, eseguilo con
php /home/dir/file_da_eseguire.php >/tmp/file_da_eseguire.log
2>/tmp/file_da_eseguire.err
e controlla il contenuto dei due file in /tmp
ps: invece di eseguire con php nomefile potresti eseguire solo nomefile
mettendo come prima riga #!/usr/bin/php o quel che è.


 e controlla il contenuto dei due file in /tmp
Allora... ho scritto dentro il crontab
* * * * * php /home/dir/file.php>/tmp/loggggg.txt
e non è successo nulla...!!
Scrivo questo
php /home/dir/file.php>/tmp/loggggg.txt
su shell e mi viene creato il file (e il contenuto è la corretta
esecuzione, apparentemente, di ciò che deve essere eseguito)

 e non è successo nulla...!!
forse faresti meglio  leggere "TUTTO" quello che ti scrive, hai lasciato
la parte che redirige lo stderr!
prima ti ho scritto:
php /home/dir/file_da_eseguire.php >/tmp/file_da_eseguire.log
2>/tmp/file_da_eseguire.err
non vedi quel "2>/tmp/file_da_eseguire.err" ?
ko, è alla riga sotto per colpa del news reader... ma insomma..


 non vedi quel "2>/tmp/file_da_eseguire.err" ?
Ah... ehemmm... chiedo venia... ero (sono!!) in preda alla
disperazione...
Allora.. ho fatto come hai detto tu. A quanto pare il crontab qualcosa
prova a fare, perchè ora i due file sono stati scritti.
Il .ERR  mi restituisce un Warnig:
---------------------------
PHP Warning:  Unknown(): Unable to load dynamic library '/usr/local/
lib/php/20020429/php_mbstring.dll' - Cannot open &quot;/usr/local/lib/
php/
20020429/php_mbstring.dll&quot; in Unknown on line 0
---------------------------
Mentre il .LOG mi dice questo:
---------------------------
Warning: main(../include/nl_db.php): failed to open stream: No such
file or directory in /usr/home/dir/admin-nl/nl_invio_em
ail_crontab.php on line 2
Warning: main(): Failed opening '../include/nl_db.php' for inclusion
(include_path='.:') in /usr/home/dir/admin-nl/nl_invio
_email_crontab.php on line 2
Warning: main(../include/nl_funzioni.php): failed to open stream: No
such file or directory in /usr/home/dir/admin-nl/nl_in
vio_email_crontab.php on line 3
Warning: main(): Failed opening '../include/nl_funzioni.php' for
inclusion (include_path='.:') in /usr/home/dir/admin-nl/nl
_invio_email_crontab.php on line 3
Warning: mysql_query(): supplied argument is not a valid MySQL-Link
resource in /usr/home/dir/admin-nl/nl_invio_email_crontab.php on line
14
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL
result resource in /usr/home/dir/admin-nl/nl_invio_email_crontab.php
on line 15
Warning: mysql_num_rows(): supplied argument is not a valid MySQL
result resource in /usr/home/dir/admin-nl/nl_invio_email_crontab.php
on line 21
Non ci sono email da inviare
---------------------------
L'ultima frase viene scritta per via della logica del file... (non
potendo prcessare niente si incarta)
Quindi pare sia colpa dei percorsi scritti male... ??
Come è preferibile scriverli?
Perchè se scrivo su shell funziona e eseguo da crontab no?
Lo script si trova qui:
/usr/home/dir/
Il file.php si trova qui dentro:
/usr/home/dir/admin-nl
La roba che includo sta qui:
/usr/home/dir/admin-nl/include
Gli include del mio file.php sono scritti così:
include("../include/nl_db.php");
include("../include/nl_funzioni.php");

 include("../include/nl_funzioni.php");
OK, risolto coi path assoluti (anche se scomodo...)

 
Prova con:
include("../admin-nl/include/nl_db.php");
include("../admin-nl/include/nl_funzioni.php");
Andrea



puoi ovviare mettendo nello script bash (che a questo punto ti servirebbe)
un ampliamento alla varibile PATH
export PATH=$PATH:dirdovestannoifiledaincludere


 Perchč se scrivo su shell funziona e eseguo da crontab no?
Perché crontab č sempre un calcio nel culo con i propri default per le 
variabili di ambiente, ti conviene impostarle esplicitamente.