Foros del Web » Programando para Internet » PHP »

require_once(), require() e include() en cron job

Estas en el tema de require_once(), require() e include() en cron job en el foro de PHP en Foros del Web. Hola.... (puse este tema en el de servidores web pero no ha tenido solucion) siguiendo con esto de los cron jobs resulta que como necesito ...
  #1 (permalink)  
Antiguo 03/04/2009, 10:16
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
require_once(), require() e include() en cron job

Hola.... (puse este tema en el de servidores web pero no ha tenido solucion) siguiendo con esto de los cron jobs resulta que como necesito enviar correos al ejecutar un script necesito llamar a la clase del phpMailer....

pero siempre en el correo de confirmacion del cron job me sale este error:

Código:
Warning: include(/pruebas/includes/phpmailer.php): failed to open stream: No such file or directory in /home/jcrosale/public_html/pruebas/crons/cron_alerta.php on line 8

Warning: include(): Failed opening '/pruebas/includes/phpmailer.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/jcrosale/public_html/pruebas/crons/cron_alerta.php on line 8

Fatal error: Class 'PHPMailer' not found in /home/jcrosale/public_html/pruebas/crons/cron_alerta.php on line 14
probe con hacerle el include con toda url que lleva al archivo (http://www.jcrosalesodontologos.pe/p.../phpmailer.php) ... pero me sale otro error:


Código:
Warning: require(): URL file-access is disabled in the server configuration in /home/jcrosale/public_html/pruebas/crons/cron_alerta.php on line 7

Warning: require(http://www.jcrosalesodontologos.pe/pruebas/includes/phpmailer.php): failed to open stream: no suitable wrapper could be found in /home/jcrosale/public_html/pruebas/crons/cron_alerta.php on line 7

Fatal error: require(): Failed opening required 'http://www.jcrosalesodontologos.pe/pruebas/includes/phpmailer.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/jcrosale/public_html/pruebas/crons/cron_alerta.php on line 7
intente de todas las formas:

require("../includes/phpmailer.php");
include $_SERVER['DOCUMENT_ROOT'] . '/pruebas/includes/phpmailer.php';
file_get_contents("http://www.jcrosalesodontologos.pe/pruebas/includes/phpmailer.php");
include ("../includes/phpmailer.php");


y el mismo resultado.... es error mio o alguna configuracion del cron job???
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 03/04/2009, 11:30
Avatar de djsos  
Fecha de Ingreso: septiembre-2007
Ubicación: Madrid-España
Mensajes: 374
Antigüedad: 16 años, 7 meses
Puntos: 14
Respuesta: require_once(), require() e include() en cron job

los includes a mi siempre me dan un pekeño problema pero tiene solucion.EL problema general suele ser que en la pagina principal haces un include a 1.php por ejemplo y en el 1.php tienes otro include a otra ruta distinta. El problema es que el include del archivo 1.php tiene tambien otra ruta y devuelve que no se encuentra.la solucion esta en que un include es como si el texto del include fuera parte del archive que le pide, con lo cual las rutas tienen que ser desde el archivo que le esta pidiendo.Un ejemplo:
index.php
Código PHP:
include("ruta1/1.php");
aqui el texto de la pagina index 
ruta1/1.php
Código PHP:
include("2.php");
aqui texto del archivo 1.php dentro de la carpeta lamada ruta1 
ruta1/2.php
[PHP]
echo"HOLA FDW"
[PHP]
ahora al abrir el index te gustaria que pusiera hola fdw no??
pues NO el servidor si lo pones asi va a interpretar
lo que interpreta el servidor es:
index.php
Código PHP:
//aqui iria el include al archivo 2.php
//Te muestra un error pq el serv lo que busca es un archivo llamado 2.php dentro de la carpeta donde esta el index.
aqui texto del archivo 1.php dentro de la carpeta lamada ruta1
aqui el texto de la pagina index 
no se si ha quedado muy claro pero la solucion como ya he dicho es sencilla unicamente es tener encuenta este dato y poner las urls completas en los include.
  #3 (permalink)  
Antiguo 03/04/2009, 12:01
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: require_once(), require() e include() en cron job

si pero en este caso el require o el include le hago a la clases phpmailer ... que en su contenido no hace ningun include a otra pagina... lei por ahi que el problema puede ser de la configuracion del php.ini del servidor y que esta en : allow_url_include = Off por seguridad

Pero si eso fuera verdad.... no podria hacer ningun include en mi propio proyecto... porque hago varios requieres e includes como para llamar a mi BD o el mismo phpmailer para los formularios de contacto....

El problema solo se me presenta al querer ejecutarlo con cron jobs ...
__________________
Quitenme la vida pero no la bebida.
  #4 (permalink)  
Antiguo 03/04/2009, 12:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: require_once(), require() e include() en cron job

Hola cesarpunk,

El problema es que cuando tu ejecutas un script via el interprete de php directamente, este toma el currentdir donde este ejecutandose, por eso te da problemas con las rutas.

Lo ideal es que uses la ruta completa a nivel de sistema de archivos, ya que si lo haces por URL no te va a servir.

La ruta completa la averiguas facil, ve a la carpeta donde tienes el phpmailer y haz un echo getcwd(); y eso te imprime la ruta, usa esa ruta en tu include().

Saludos.
  #5 (permalink)  
Antiguo 03/04/2009, 12:33
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Respuesta: require_once(), require() e include() en cron job

Puedes usar dirname(__FILE__); dentro de tu script para obtener el directorio donde esta almacenado el fichero del script.
  #6 (permalink)  
Antiguo 03/04/2009, 12:40
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
user el getcdw(); y me devolvio la ruta del servidor... bueno lo use en el include y me salio el siguiente error en el correo de confirmacion del cron:

Warning: include(/home/jcrosale/public_html/pruebas/includes): failed to open stream: No such device in /home/jcrosale/public_html/pruebas/crons/cron_alerta.php on line 10

Warning: include(): Failed opening '/home/jcrosale/public_html/pruebas/includes' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/jcrosale/public_html/pruebas/crons/cron_alerta.php on line 10

Fatal error: Class 'PHPMailer' not found in /home/jcrosale/public_html/pruebas/crons/cron_alerta.php on line 15

ahhhhhhh sorry sorry me falto poner al final el phpmailer.php en el include..... al fin me funciono el cron job muchas gracias Gatorv
__________________
Quitenme la vida pero no la bebida.

Última edición por GatorV; 03/04/2009 a las 15:27
  #7 (permalink)  
Antiguo 03/04/2009, 21:43
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: require_once(), require() e include() en cron job

cesarpunk:

Mi experiencia con includes y otros archivos cuando utilizo cron es que
cuando llamo un archivo que sale fuera de la ruta en que estoy, por ejemplo este
require("../includes/phpmailer.php");
Da error irremediablemente.

La solucion para mi fue que tuve que mover el archivo, en este caso seria
phpmailer.php a un directorio hacia abajo o descendente. O colocarlo donde estoy ejecutando el codigo principal.
Ejemplo : include("phpmailer.php");

Creo que tiene que ver con el safe mode o algo asi.

Saludos
Y espero te ayude
franco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:47.