Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[PHP] Cron werkt niet

Pagina: 1
Acties:
  • 451 views

Verwijderd

Topicstarter
Beste tweakers.

Ik ben bezig met een nieuwe Drupal installatie. Ik heb een probleem met het runnen van cron.php. Voor de niet Drupal kenners onder ons: cron.php zorgt voor het updaten en onderhouden van de website, en is dus belangrijk en noodzakelijk :)

De cron op de root-user ziet er als volgt uit

code:
1
15 * * * * php /var/www/vhosts/****.com/httpdocs/****/cron.php


dus elke 15 minuten wordt cron.php uitgevoerd. De output hiervan wordt aan mij gemailt.

Dit is de output

code:
1
2
3
4
5
6
7
Warning: include_once(): Unable to access ./includes/bootstrap.inc in /var/www/vhosts/****.com/httpdocs/****/cron.php on line 9

Warning: include_once(./includes/bootstrap.inc): failed to open stream: No such file or directory in /var/www/vhosts/****.com/httpdocs/****/cron.php on line 9

Warning: include_once(): Failed opening './includes/bootstrap.inc' for inclusion (include_path='.:') in /var/www/vhosts/****.com/httpdocs/****/cron.php on line 9

Fatal error: Call to undefined function drupal_bootstrap() in /var/www/vhosts/****.com/httpdocs/****/cron.php on line 10


Hij kan dus bootstrap.inc niet vinden in de includes folder, terwijl deze wél bestaat!

De code in cron.php

code:
1
2
3
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
drupal_cron_run();


Als ik hierin de eerste regel wijzig in

code:
1
include_once 'includes/bootstrap.inc';


Dan kan ie bootstrap.inc wel vinden en includen, maar verplaatst het probleem zich omdat ie in bootstrap.inc ook weer includes gaat zoeken via include_once './includes/****p.inc';

Dus het probleem is: De "./" voor de relative paths lijkt niet te kloppen, maar het kan niet zo zijn dat dit in de hele Drupal installatie verkeerd is...

Waarom pikt mijn server de "./" niet?

Thanx!

  • Thomasje
  • Registratie: Augustus 2002
  • Laatst online: 29-05-2024

Thomasje

Semacode

/****/ staat die op de zelfde diepte als /includes?

  • Raymond P
  • Registratie: September 2006
  • Nu online
Waarschijnlijk omdat de user waarmee je de cron runt een andere base directory heeft.
Ik ben verder niet bekend met drupal, maar ini: set_include_path zal je probleem oplossen.

- knip -


Verwijderd

Topicstarter
file structuur is als volgt:

root/cron.php
root/includes/bootstrap.inc

  • Thomasje
  • Registratie: Augustus 2002
  • Laatst online: 29-05-2024

Thomasje

Semacode

Probeer eens:

PHP:
1
include_once dirname(__FILE__) . '/includes/bootstrap.inc'

[ Voor 21% gewijzigd door Thomasje op 07-01-2011 14:12 ]


  • serhat
  • Registratie: December 2002
  • Laatst online: 22-09-2023
Het liefst wil je geen PHP bestanden wijzigen, zodat deze na een update ook nog mogelijk werken. (Hoef je de wijzigingen niet weer uit te voeren)
Ik zou zelf de basedir fixen, dit omdat het gezeur met basedirs vaak genoeg voor problemen zorgen.

Wat ik zelf vaak doe met cronjobs is of een shellscript gebruiken die naar de goede map cd't en dan pas de commando.

Of je zet ook de cd direct in cron.
Als in:
code:
1
cd /var/www/vhosts/....com/httpdocs/  && php <phpfile>

Weet je zeker dat de basedir goed staat

Verwijderd

Topicstarter
Thomasje schreef op vrijdag 07 januari 2011 @ 14:10:
Probeer eens:

PHP:
1
include_once dirname(__FILE__) . '/includes/bootstrap.inc'
Nu vindt ie de bootstrap.inc wel, maar op lijn 1130 van boostrap.inc kan ie dan weer cache.inc niet vinden

code:
1
Fatal error: require_once(): Failed opening required './includes/cache.inc' (include_path='.:') in /var/www/vhosts/****.com/httpdocs/****/includes/bootstrap.inc on line 1130


Helaas :(

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Kwestie van debuggen. Wat zegt getcwd()?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Verwijderd

Topicstarter
serhat schreef op vrijdag 07 januari 2011 @ 14:18:
Of je zet ook de cd direct in cron.
code:
1
cd /var/www/vhosts/....com/httpdocs/  && php <phpfile>

Weet je zeker dat de basedir goed staat
mijn cron wordt dan dus
code:
1
2
cd /var/www/vhosts/****.com/httpdocs/****/
0 * * * * php cron.php

Verwijderd

Topicstarter
Serhat als ik jouw code in de crontab zet, dan wil ie niet eens saven ;)

"errors in crontab file, can't install."

  • Thomasje
  • Registratie: Augustus 2002
  • Laatst online: 29-05-2024

Thomasje

Semacode

Probeer eens volgende:

PHP:
1
2
3
4
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(dirname(__FILE__)),
    get_include_path(),
)));

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:59

Creepy

Tactical Espionage Splatterer

De oplossing van serhat gebruiken. Eerst een CD de juiste directory in en dan direct php cron.php aanroepen. Als cron klaagt ligt dat niet direct aan de code van serhat maar aan je eigen kennis van cron. Een cron regel moet altijd beginnen met de tijdsaanduiding. Die "cd" die er nu staat staat echt totaal op de verkeerde plek. Een cron is geen shellscript!

[ Voor 58% gewijzigd door Creepy op 07-01-2011 14:42 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
getcwd geeft:

code:
1
/bin/bash: -c: line 1: syntax error: unexpected end of file

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:59

Creepy

Tactical Espionage Splatterer

Als getcwd dat echt geeft, geef het dan maar op en laat je hoster er naar kijken. Als je dit echt krijgt dan is het echt een stukke server.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Thomasje schreef op vrijdag 07 januari 2011 @ 14:36:
Probeer eens volgende:

PHP:
1
2
3
4
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(dirname(__FILE__)),
    get_include_path(),
)));
OK, volledige cron.php wordt dan

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// $Id: cron.php,v 1.36 2006/08/09 07:42:55 dries Exp $

/**
 * @file
 * Handles incoming requests to fire off regularly-scheduled tasks (cron jobs).
 */

set_include_path(implode(PATH_SEPARATOR, array(
    realpath(dirname(__FILE__)),
    get_include_path(),
)));

include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
drupal_cron_run();

?>


gonna try now :)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:59

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op vrijdag 07 januari 2011 @ 14:32:
[...]


mijn cron wordt dan dus
code:
1
2
cd /var/www/vhosts/****.com/httpdocs/****/
0 * * * * php cron.php
Nogmaals dan: fouter dan dit kan niet. Dat ligt aan jou, en niet aan serhat. Het had iets moeten zijn als

code:
1
0 * * * * cd /var/www/vhosts/****.com/httpdocs/****/ && php cron.php

Als je zelf even de moeite had genomen om je in cron te verdiepen dan had je dat zelf ook gevonden. Ga je zelf eens echt in de materie verdiepen en zelf nadenken. Nu roep je alleen dat het niet werkt en ga je zitten wachten totdat je oplossingen krijgt aangedragen zonder dat je er zelf even in verdiept, en dat is nu net niet de bedoeling.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.