PHP Cronjob DomDocument

Pagina: 1
Acties:
  • 115 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste tweakers,

Ik wil graag met php een script maken dat gebruik maakt van het DomDocument object, wanneer ik dit script uitvoer in mijn browser is er niet aan de hand. Werkt prima.
Wanneer ik dit script wil aanroepen als een cronjob, dit moet een script worden wat elke nacht een keer aangestuurd moet worden, dan werkt het niet. Ik krijg dan de melding:

Fatal error: Class 'DomDocument' not found

Ik gebruik de methode

$test = new DomDocument();

Heeft dit te maken met het feit dat een cronjob alles uitvoert als root?? Zo ja, is hier een oplossing voor? Kan de class DomDocument ook zelf geinclude worden?

Volgens mij is PHP al wel goed geconfigureerd.

Iemand een idee?

Mvgr,

Dimitri

Ik maag gebruik van:
PHP Version 5.0.5-Debian-0.8~sarge1 (Debian GNU/Linux)
Dom instellingen volgens phpinfo:
DOM/XML enabled
DOM/XML API Version 20031129
libxml Version 2.6.16
HTML Support enabled
XPath Support enabled
XPointer Support enabled
Schema Support enabled
RelaxNG Support enabled

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Ik vind het teneerste al gek dat je document aangeroepen onder root.

Daar heb jij/PHP niets te zoeken voor normaal gebruik.

Apache draait onder eige user, dus ZO erg zal het wel niet zijn.

Zijn de path's juist? Class not found? Include je de file?

Doe eens ipv include require, dan zie je of de classe file gevonden wordt.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik bedoel dat de crontab manager alle scripts uitvoert als root.

Dom functies zijn een onderdeel van PHP (met --dom configuratie) en hoeft dus niet worden geinclude.
Vanuit de browser werkt het ook prima maar het gaat er om dat wanneer de crontab manager het script uitvoert dat ik dan de melding krijg Class not found

Acties:
  • 0 Henk 'm!

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 24-06 00:27

Jurgle

100% Compatible

Misschien komt het doordat je PHP script met een aanroep van je browser als module van apache draait en als je php.exe zelf aanroep is er dan wellicht een andere configuratie?

Een hack die je zou kunnen proberen is om een PHP script te maken die je aanroept met wget en in het script checked of de remote host == localhost, zodat de cron niet van buitenaf aangeroepen kan worden.

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Laatst online: 10-09 06:36

ATS

Waarom probeer je niet gewoon of het een probleem is met het uitvoeren onder root of niet? Kwestie van even su naar root, testen. Dan en su naar je Apache user, en nog een keertje testen. Doet hij het wel onder de ene user en niet onder de andere, dan weet je toch gewoon of dat het probleem is?

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Heb je ergens een include of require staan die naar de klasse verwijst? Het lastige van cronjobs is dat ze onder andere directory worden uitgevoerd dus even een absoluut path meegeven in de require.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor wat ik zover kan zien denk ik dat Jurgie de spijker op z'n kop slaat. Bij het bekijken van de phpinfo uitgevoerd vanuit de crontab zie ik dat de Dom extensie niet geconfigureerd is.
Moet dus maar eens met de server beheerders gaan babbelen.

Bedankt voor het meedenken everyone.....

Acties:
  • 0 Henk 'm!

Verwijderd

waarom laad je de extensie niet gewoon?

voor PHP4 is het nog heel gebruikelijk om extensie's die niet via php.ini worden geladen vi dl() te laaden. allen voor PHP5 wordt dit afgeraden.

hier nog wat handig leesvoer:
http://nl3.php.net/manual/en/features.commandline.php
http://nl3.php.net/manual/en/function.extension-loaded.php
http://nl3.php.net/manual/en/function.dl.php
http://nl3.php.net/manual...get-loaded-extensions.php

het probleem zit em in dat als je php via de commandline uitvoert, zeker als ander user, php de php.ini gewoon niet leest en terug valt op zijn default settings.

hiervoor kun je ook de -c parameter meegeven aan php. bijvoorbeeld 'php -c /etc/httpd/ /var/www/user/cronscript.php'. ook kun je 'php -m' gebruiken om te zien of een extensie standaard laadt.
Pagina: 1