OVH Community, your new community space.

Ejecutar un archivo cada día a las 6:00 am


Power
22/09/2008, 22:30
Hola

El tema de insertar registros en una base de datos no depende de permisos de ejecución.
Sólo depende de que en la instrucción de conexión a la base de datos hayas puesto correctamente el usuario y contraseña de acceso a esa BD.

El otro tema de escribir en un fichero sí depende de los permisos de ese fichero.

¿Se ejecuta bien el script cuando lo llamas desde el navegador http://dominio.com/script.php ?

¿Se ejecuta cuando lo llamas desde el shell como php /caminoalfichero/script.php ?

¿Se ejecuta cuando lo llamas desde el shell como wget http://dominio.com/script.php ?

¿Qué permisos tiene el fichero donde debe escribir el script?

Saludos

jokin
22/09/2008, 21:58
Pues no funcionó.
Ahora no me hace nada.

Quizá sea por que el archivo que se ejecuta, debe de insertar registros en una base de datos y escribir en un archivo. Supongo que el comando que indicas no permite hacerlo con lo que el archivo no hace lo que debiera.

Me temo que es más del archivo en cuestión, mezclado con algo de permisos de usuario, pero el tema de permisos, no llego a entenderlo del todo.

Un saludo

jokin
17/09/2008, 08:13
Saludos Power:
Yo tengo instalado CentOs como distribución en el servidor.
Y mi servidor Apache utiliza como usuario nobody
Para poner mis "crons" utilizo Webmin y me pide con qué usuario se debe ejecutar.

Prueba poniéndole como usuario el mismo del servidor web (nobody en mi caso).
Esto...no llego hasta ahí...vamos que mis conocimientos en este área son bastante limitados y por ahora simplemente soy capaz de hacer funcionar básicamente el servidor...aún así agradezco la explicación.

De la segunda parte que comentas, voy a probar el insertar >/dev/null 2>&1 a ver qué hace.

Si, el archivo que se ejecuta, realiza escritura tanto en la base de datos como en otro archivo de otra carpeta. El archivo tiene permiso de escritura ya que al ejecutarlo manualmente lo realiza sin problema.

Pruebo lo que me dices y ya te comentaré si me funciona.

Gracias y un saludo

Power
16/09/2008, 20:44
Cita Publicado inicialmente por jokin
Pero a qué usuario os referís?

Si en el navegador escribo dicha dirección y no me pide nada...no necesito permiso alguno...de hecho cualquier puede ejecutarlo.
Hola Jokin,

Me alegra que ya casi lo tengas conseguido.

Yo tengo instalado CentOs como distribución en el servidor.
Y mi servidor Apache utiliza como usuario nobody
Para poner mis "crons" utilizo Webmin y me pide con qué usuario se debe ejecutar.

Prueba poniéndole como usuario el mismo del servidor web (nobody en mi caso).

De todas formas, por lo que leo, parece que tu archivo.php intenta escribir y no lo consigue.
No sé si será una escritura propia de tu script archivo.php o el resultado de la navegación por ese script.

Por si es esto último, puedes poner como comando:
wget http://midominio.com/libs/archivo.php >/dev/null 2>&1

Eso del >/dev/null 2>&1 impedirá que intente escribir el resultado del acceso a la web en el directorio donde esté (y donde posiblemente no tenga permiso de escritura).

Saludos y suerte.

jokin
16/09/2008, 19:34
Ok Raikkon

Pero a qué usuario os referís?

Si en el navegador escribo dicha dirección y no me pide nada...no necesito permiso alguno...de hecho cualquier puede ejecutarlo.

Teneis idea de cómo solucionarlo?

Raikkon
16/09/2008, 13:01
Opino lo mismo que te ha dicho Power, el problema va a estar en el usuario.

jokin
16/09/2008, 08:11
Saludos Power:

Tenía aparcado el tema este por otras prioridades pero vuelvo otra vez con ello

El cron funciona a la hora que le indico y ejecuta el archivo que le mando (un archivo .php)

...pero me da un error, que creo que tiene que ver con permisos aunque no soy capaz de entenderlo del todo:
06:00:01-- http://www.midominio.com/libs/archivo.php
=> `archivo.php'
Resolving www.midominio.com... 91.125.129.125
Connecting to www.midominio.com|91.125.129.125|0... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
archivo.php: Permission denied

Cannot write to `archivo.php' (Permission denied).
El caso es que cuando ejecuto el archivo manualmente, lo ejecuto sin indentificarme de ninguna manera, ni en la web, ni en el servidor...simplemente tecleo la ruta completa del archivo y funciona

Y con el cron me dice que permiso denegado.

Tengo que otorgarle algún permiso, comando especial a ese archivo para que se pueda ejecutar automáticamente? Alguna otra idea?


Gracias y un saludo

Power
25/08/2008, 09:23
Cita Publicado inicialmente por jokin
Ok...parece que ya lo ejectua.
Pero se generan algunos errores que al ejecutar manualmente el archivo no se dan....:confused:
Comprueba con qué usuario lo ejecutas en el cron y con qué usuario lo ejecutas manualmente.

El problema puede estar en los permisos.

Saludos

jokin
25/08/2008, 07:13
Ok...parece que ya lo ejectua.

Pero se generan algunos errores que al ejecutar manualmente el archivo no se dan....:confused:

A ver si adivino por qué ocurre esto...

Gracias y un saludo

Power
24/08/2008, 23:33
Entonces creo que primero deberías probar desde tu ordenador con el navegador:
http://midominio.com/libs/archivo.php

Si se ejecuta, ya vamos por buen camino.
Y lo siguiente sería probar en la línea de comandos del servidor:
wget http://midominio.com/libs/archivo.php

Ya nos contarás.

Saludos

jokin
24/08/2008, 22:18
Los he probado y tampoco han funcionado.

El caso es que con Me da lo la dirección siguiente:

DOCUMENT_ROOT /var/www/vhosts/midominio.com/httpdocs
_SERVER["DOCUMENT_ROOT"] /var/www/vhosts/midominio.com/httpdocs
y el archivo a ejecutar esta donde he colocado el info.php:

SCRIPT_FILENAME /var/www/vhosts/midominio.com/httpdocs/libs/info.php
Por lo que deduzco (corregidme si me equivoco) que debiera de ser:

/var/www/vhosts/midominio.com/httpdocs/libs/archivo.php

Pero ni con php por delante ni con wget ni sin nada

A ver si se os ocurre algo...

Un saludo

Power
24/08/2008, 21:21
En CentOS la ruta es:
/home/usuario/public_html/nombredelfichero.php

Así que el comando sería, por ejemplo:
php /home/pepito/public_html/ejecutar.php

En el caso de wget, creo que se comporta como un navegador y sería:
wget http://www.dominio.com/ejecutar.php

Saludos

jokin
24/08/2008, 19:49
Pues nada:

La ruta completa es esta?

/var/www/vhosts/midominio.com/httpdocs/libs/archivo.php
Me refiero al inicio de la misma (he probado con /var, sin /var, sin /www....)
(la he sacado de un archivo con en el mismo directorio)

Pero nada.

Le he añadido delante wge...y tampoco:

wget /var/www/vhosts/midominio.com/httpdocs/libs/archivo.php
Tampoco con php

php /var/www/vhosts/midominio.com/httpdocs/libs/archivo.php
Alguna otra idea de por qué no funciona?

Gracias y un saludo

jokin
24/08/2008, 19:33
Gracias a todos.

Pienso probar todas las opciones hasta ver si alguna funciona :-)

Os contaré.

Un saludo

jmjosebest
24/08/2008, 13:46
Tienes que poner la ruta absoluta en el servidor, no la url...

algo así:
/home/nombre/public_html/archivo.php

Raikkon
24/08/2008, 13:13
Lo siento, lo decía por el tiempo.

Prueba a ver con lo que te ha dicho Power.

Suerte y un saludo.

Power
24/08/2008, 12:21
Cita Publicado inicialmente por jokin
En la línea de comando con poner la página, la carga?
No hay que poner un execute o algo similar?
Efectivamente, creo que tienes que poner qué programa llamará a esa página.
Puedes poner php /caminohastalapagina/ejecutar.php
O bien: wget http://www.midominio.com/ejecutar.php

Prueba y nos cuentas.

Saludos

jokin
24/08/2008, 10:40
Gracias Raikkon por responder

Pues parece que no funciona :-(

En la línea de comando con poner la página, la carga?

No hay que poner un execute o algo similar?

Gracias y un saludo

Raikkon
24/08/2008, 02:02
Exacto : )

jokin
24/08/2008, 01:46
Gracias por responder jmjosebest:

Ok, lo acabo de encontrar en Plesk. Sería algo así, no? A ver si alguien me lo puede confirmar ya que no lo he hecho nunca. Gracias.

Minuto 0
Hora 6
Día del mes 1-31

Mes
Introduzca un valor 1-12
en formato crontab de Unix e.g. 1, 5-7, */4

Día de la semana *
Introduzca un valor 1-7
en formato crontab de Unix e.g. 1, 4-6


Comando * http://www.midominio.com/ejecutar.php

Un saludo

jmjosebest
24/08/2008, 01:36
Seguro que con Plesk no tienes un asistente para ejecutar cron?
Bueno, aquí tienes una guía muy completita
http://www.linuxtotal.com.mx/index.p...info_admon_006

Un saludo!!

jokin
24/08/2008, 01:13
Saludos:

Simplemente necesito ejecutar un archivo (p.e. http://midominio.com/ejecutar.php) a diario a las 6:00 am (todo el año).

Me han comentado algo del Cron pero no se dónde ni como hacerlo.

SEguro que aquí alguno me puede dar las indicaciones oportunas.

Gracias y un saludo