Mit externem php-script auf typo3 zugreifen [Gelöst]

  • mad1200 mad1200
    Sternenflotten-Admiral
    0 x
    151 Beiträge
    0 Hilfreiche Beiträge
    27. 04. 2007, 14:37

    Hallo,

    ich möchte mit einem externen php-script auf typo3 zugreifen.
    Das externe Script wir als Cronjob ausgeführt.
    z.B. Prüfen, ob eine Extension geladen ist und
    Values aus einem Flexfrom dieser
    geladenen Extension auslesen.

    Wer kann helfen?

    Gruß und schönes WE
    Matthias


  • garbast garbast
    R2-D2
    0 x
    84 Beiträge
    0 Hilfreiche Beiträge
    28. 04. 2007, 14:54

    Schau Dir mal das Thema [url=http://typo3.org/documentation/document-library/tutorials/doc_tut_backend/current/]Backend Programming[/url] an.

    Die daraus resultierenden Dateien kannst Du auch per Cronjob aufrufen. Ein Beispiel dafür ist die Extention 'crawler' die ebenso per Cronjob funktioniert.

  • mad1200 mad1200
    Sternenflotten-Admiral
    0 x
    151 Beiträge
    0 Hilfreiche Beiträge
    02. 05. 2007, 10:24

    Habe schon div. Versuche gemacht.

    Folgendes habe ich in meinem Script eingefügt, bekomme aber immer eine Fehlermeldung.

    1. if ($_SERVER['PHP_SELF']) {
    2. if (!defined('PATH_thisScript')) define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', $_SERVER['PHP_SELF'])));
    3. } else {
    4. if (!defined('PATH_thisScript')) define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', $_ENV['_'])));
    5. }
    6. if (!defined('PATH_site')) define('PATH_site', dirname(dirname(dirname(dirname(dirname(PATH_thisScript))))).'/');
    7. if (!defined('PATH_t3lib')) if (!defined('PATH_t3lib')) define('PATH_t3lib', PATH_site.'t3lib/');
    8. define('PATH_typo3conf', PATH_site.'typo3conf/');
    9.  
    10. define('TYPO3_mainDir', 'typo3/');
    11. if (!defined('PATH_typo3')) define('PATH_typo3', PATH_site.TYPO3_mainDir);
    12. if (!defined('PATH_tslib')) {
    13. if (@is_dir(PATH_site.'typo3/sysext/cms/tslib/')) {
    14. define('PATH_tslib', PATH_site.'typo3/sysext/cms/tslib/');
    15. } elseif (@is_dir(PATH_site.'tslib/')) {
    16. define('PATH_tslib', PATH_site.'tslib/');
    17. }
    18. }
    19.  
    20.  
    21. define('TYPO3_OS', stristr(PHP_OS,'win')&&!stristr(PHP_OS,'darwin')?'WIN':'');
    22. define('TYPO3_MODE', 'BE');

    [b]//die folgende Zeile wird angemeckert,kommentiere ich sie aus, wird die nächste Zeile angemeckert usw.[/b]

    1. require_once(PATH_t3lib.'class.t3lib_div.php');
    2. require_once(PATH_t3lib.'class.t3lib_extmgm.php');
    3. require_once(PATH_t3lib.'config_default.php');
    4. require_once(PATH_typo3conf.'localconf.php');
    5.  
    6. if (!defined ('TYPO3_db')) die ('The configuration file was not included.');
    7. if (isset($_POST['GLOBALS']) || isset($_GET['GLOBALS'])) die('You cannot set the GLOBALS-array from outside this script.');

  • garbast garbast
    R2-D2
    0 x
    84 Beiträge
    0 Hilfreiche Beiträge
    02. 05. 2007, 11:46

    Ich kann Dir nichts anderes sagen, als schau Dir 'crawler' an. Es funktioniert für Kasper also sollte es auch bei Dir funktionieren.

    Bisher habe ich so eine Extention noch nie benutzt da ich keinen Crownjob zur Verfügung habe. Kann also nur darauf verweisen.

  • mad1200 mad1200
    Sternenflotten-Admiral
    0 x
    151 Beiträge
    0 Hilfreiche Beiträge
    02. 05. 2007, 12:10

    Danke trotzdem.
    Spielt aber keine Rolle ob Cronjob oder nicht, das Script kann ja auch manuell gestartet werden.

    Ich such dann mal weiter.

  • mad1200 mad1200
    Sternenflotten-Admiral
    0 x
    151 Beiträge
    0 Hilfreiche Beiträge
    07. 05. 2007, 08:47

    Hallo nochmal,

    ich bekomme das einfach nicht gebacken. #angry#

    Wer hat noch einen Vorschlag??

    Gruß

    Matthias

  • Spyker Spyker
    Jedi-Meister
    0 x
    400 Beiträge
    0 Hilfreiche Beiträge
    07. 05. 2007, 14:06

    schon mal nach CLI gsucht....

    TYPO§ Command Line Interface?

    Beste GRüße,
    Tim

  • mad1200 mad1200
    Sternenflotten-Admiral
    0 x
    151 Beiträge
    0 Hilfreiche Beiträge
    08. 05. 2007, 07:17

    Habe ich auch schon versucht.
    Genau so eingebaut wie hier beschrieben:
    http://www.typo3-tutorials.org/tutorials/entwicklung/cli-shell-scripte.html

    Rufe ich dann das Script auf, erscheint.
    Warning: Cannot modify header information ....
    in /var/lib/typo3/typo3_src-4.1/t3lib/class.t3lib_userauth.php on line 279
    Warning: Cannot modify header information ....
    in /var/lib/typo3/typo3_src-4.1/t3lib/class.t3lib_userauth.php on line 312
    Warning: Cannot modify header information ....
    in /var/lib/typo3/typo3_src-4.1/t3lib/class.t3lib_userauth.php on line 313
    Warning: Cannot modify header information ....
    in /var/lib/typo3/typo3_src-4.1/t3lib/class.t3lib_userauth.php on line 314
    Warning: Cannot modify header information ....
    in /var/lib/typo3/typo3_src-4.1/t3lib/class.t3lib_userauth.php on line 315

    Ich habe noch nichts weiter hinzugefügt.
    Warum kommen diese Fehlermedlungen?

  • 0 x
    112 Beiträge
    0 Hilfreiche Beiträge
    08. 05. 2007, 17:10

    Ich weiß nicht, ob das weiterhilft, aber ich habe mich gestern und heute auch mit dem Problem beschäftigt, ein Skript per Cronjob auszuführen, welches in das Typo3-Framework eingebettet ist. Das in diesem Thread genannte Tutorial bezieht sich m.W. auf T3-Versionen < 4.1. Mein Lösung für Typo3 4.1 bislang:

    1.) Ich habe das Skript, welches per Cronjob ausgeführt werden soll, in den Ordner einer (beliebigen) bestehenden Extension kopiert.
    2.) In der Datei ext_localconf.php dieser Extension habe ich folgende Zeile hinzugefügt:

    1. $TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys']['test'] = array('EXT:extentionname/pi1/test.php','_CLI_lowlevel');

    Die Zeile sorgt dafür, dass ein sog. CLI-Key angelegt wird - zusammen mit dem Pfad, unter dem das auszuführende PHP-Skript zu finden ist.
    Danach ggf. den T3-Cache leeren.
    3.) In die Crontab des Servers muß man nun folgendes eintragen (ich mache das über Plesk):
    /srv/www/vhosts/domain.de/httpdocs/typo3/cli_dispatch.phpsh test
    Man ruft damit also nicht das Skript direkt auf, sondern eine Typo3-Datei namens "cli_dispatch.phpsh". Dieser übergibt man den zuvor angelegten CLI-Key. Über den Key weiß Typo3, welche Datei der Cronjob eigentlich wirklich ausführen möchte.
    4.) Damit das Ganze funktioniert, muss man noch einen Backend-User namens "_cli_lowlevel" im Typo3-Backend anlegen.

    Was mir noch unklar ist, ist die genaue Funktionsweise des Skriptes "cli_dispathc.phpsh" und die Bedeutung von _CLI_lowlevel beim Setzen des CLI-Keys.

  • mad1200 mad1200
    Sternenflotten-Admiral
    0 x
    151 Beiträge
    0 Hilfreiche Beiträge
    08. 05. 2007, 19:54

    OK, das funtioniert soweit.
    Das Script läßt sich aufrufen.
    Jetzt möchte ich in diesem Script aber Werte aus dem Flexform
    benutzen.
    Wie z.B. storagepid, dbName,dbPasswort usw.

    Das muß dann doch irgendwie so gehen, wie in der Klasse der Extension.

    Das habe ich jetzt eingebaut in dem aufzurufenden Sciipt.
    require_once(t3lib_extMgm::extPath('extName').'pi1/class.tx_extname_pi1.php');
    $this->flexValues= t3lib_div::makeInstance('tx_extename_pi1');
    ´
    $pid=$this->flexValues->pi_getFFvalue($this->tslib_cObj->data['pi_flexform'], 'storagepid', 'sDEF');

    Wie geht'n das?