Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Eseguire un file.php con Crontab?

223 views
Skip to first unread message

ricc

unread,
Oct 30, 2008, 10:13:17 AM10/30/08
to
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

ricc

unread,
Oct 30, 2008, 10:15:23 AM10/30/08
to
Ho chiesto anche su altri forum ma non sono ancora riuscito a
risolvere :(((((

Quasimodo

unread,
Oct 30, 2008, 10:31:13 AM10/30/08
to
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

RedWiz

unread,
Oct 30, 2008, 10:42:46 AM10/30/08
to
> 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

a parte che non vedo l'utilitą di passare da uno script bash per
eseguirne un altro(senza fare altro), potresti mettere in cron
direttamente l'esecuzione di quello php. Poi, ci sarebbe da vedere il
contentuto di quello php per capire meglio


> ...e mi aspettavo che ogni minuto venisse eseguito il mio file.
> 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/

ricc

unread,
Oct 30, 2008, 10:56:34 AM10/30/08
to
On 30 Ott, 15:42, RedWiz <red...@inwind.it> wrote:
> a parte che non vedo l'utilità di passare da uno script bash per

> eseguirne un altro(senza fare altro), potresti mettere in cron
> direttamente l'esecuzione di quello php. Poi, ci sarebbe da vedere il
> contentuto di quello php per  capire meglio

Perchè speravo che così funzionasse!!
Ho provato da shell a scrivere:

php /home/dir/file_da_eseguire.php

e il file viene eseguito correttamente (all'interno del file php ci
sono un paio di include, una query e la funzione mail()).

E il crontab che non me lo esegue...


> niente significa che non viene eseguito o che da un errore?

Non riesco a vedere errori...


> se lo esegui in questo modo non potrai mai saperlo, redirigi su file
> 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?

RedWiz

unread,
Oct 30, 2008, 11:10:05 AM10/30/08
to
>> a parte che non vedo l'utilità di passare da uno script bash per
>> eseguirne un altro(senza fare altro), potresti mettere in cron
>> direttamente l'esecuzione di quello php. Poi, ci sarebbe da vedere il
>> contentuto di quello php per  capire meglio
>
> Perchè speravo che così funzionasse!!

certo che funziona così,sono metodi equivalenti, solo che se passi dal
bashfai inutilmente un giro piu' lungo

> Ho provato da shell a scrivere:
> php /home/dir/file_da_eseguire.php
>
> e il file viene eseguito correttamente (all'interno del file php ci
> sono un paio di include

attenzione agli include, potrebbe essere necessario usare path completi ai
file da includere



> E il crontab che non me lo esegue...

ripeto, sicuro che non te lo esegue?


>> niente significa che non viene eseguito o che da un errore?
> Non riesco a vedere errori...

lo so, non redirigi niente!

>
>> se lo esegui in questo modo non potrai mai saperlo, redirigi su file
>> 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?

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 è.

ricc

unread,
Oct 30, 2008, 11:29:19 AM10/30/08
to
On 30 Ott, 16:10, RedWiz <red...@inwind.it> wrote:
> 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)

RedWiz

unread,
Oct 30, 2008, 11:39:03 AM10/30/08
to
>> 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...!!

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..

ricc

unread,
Oct 31, 2008, 4:27:04 AM10/31/08
to
On 30 Ott, 16:39, RedWiz <red...@inwind.it> wrote:
> 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");

ricc

unread,
Oct 31, 2008, 7:47:05 AM10/31/08
to
On 31 Ott, 09:27, ricc <ricm...@gmail.com> wrote:
> include("../include/nl_db.php");
> include("../include/nl_funzioni.php");

OK, risolto coi path assoluti (anche se scomodo...)

Quasimodo

unread,
Oct 31, 2008, 8:47:29 AM10/31/08
to
ricc ha scritto:

> On 30 Ott, 16:39, RedWiz <red...@inwind.it> wrote:
>> 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.
> 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");
>

Prova con:

include("../admin-nl/include/nl_db.php");
include("../admin-nl/include/nl_funzioni.php");

Andrea

RedWiz

unread,
Oct 31, 2008, 9:12:01 AM10/31/08
to

puoi ovviare mettendo nello script bash (che a questo punto ti servirebbe)
un ampliamento alla varibile PATH

export PATH=$PATH:dirdovestannoifiledaincludere

Andrea D'Amore

unread,
Oct 31, 2008, 10:42:15 AM10/31/08
to
In article
<d9611214-9838-43bc...@1g2000prd.googlegroups.com>,
ricc <ric...@gmail.com> wrote:

> 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.

0 new messages