Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo

Ich bin neu hier im Forum und habe ein Problem an dem ich hänge und absolut nicht weiter komme.

Folgendes Problem:

Bei einer Typo3 Extension wird ein CronJob benötigt welcher natürlich zuvor angelegt werden muss.

Der CronJob lautet www.rothe-immobilien.com/typo3/cli_dispatch.phpsh (diesen spricht er auch an), alelrdings muss laut Tutorial der Extension hinter diesem Cronjob die Klasse OpenImmoImport aufgerufen werden. Das geht hier aber leider nicht!

Also folgender Cronjob oder URL müsste eingebunden werden: www.rothe-immobilien.com/typo3/cli_dispatch.phpsh openImmoImport

Da hier aber ein Leerzeichen enthalten ist nimmt er Servertechnisch den CronJob nicht an. Mein Anbieter schickt mir auf Nachfrage folgende Antwort: Dass die URL nicht angenommen wird liegt daran, weil ein Leerzeichen in der URL enthalten ist und diese somit ungültig ist.

Gibt es für das Problem noch eine andere Lösung?

Mit Bitte um Rückmeldung

Ltd.Lupo

Geschrieben

Also mit Anführungszeichen geht es auch nicht!

Das ist der Eintag im Tutorial: Set up a cron job to run PHP with it. The command to use for the cron job is: /[absolute path of the TYPO3 installation]/typo3/cli_dispatch.phpsh openImmoImport A line in your cron tab that imports realty objects at three o’clock a.m. then could look like this: 0 3 * * * /var/www/typo3/cli_dispatch.phpsh openImmoImport

Den Cronjob richte ich über meine Server KAS Administration ein, wobei ich hier die URL des CronJob eingeben kann....hier nimmt er halt nicht die Leerzeile an sondern gibt mir die Fehlermeldung an: URL ist ungültig!

Geschrieben

Probier einmal folgendes als Pfad für den Aufruf:


php "<absoluter Pfad zum Script z.B. /var/www....>?parameter1=value1&parameter2=value2..."

Du kannst keine Parameter mit Leerzeichen in einer URL übergeben, Leerzeichen würde mit %20 codiert werden. Wenn es sich um ein Kommandozeilenscript handelt

php "<absoluter Pfad zum Script z.B. /var/www....> parameter1 parameter 2..."

Geschrieben (bearbeitet)
Probier einmal folgendes als Pfad für den Aufruf:


php "<absoluter Pfad zum Script z.B. /var/www....>?parameter1=value1&parameter2=value2..."

Du kannst keine Parameter mit Leerzeichen in einer URL übergeben, Leerzeichen würde mit %20 codiert werden. Wenn es sich um ein Kommandozeilenscript handelt

php "<absoluter Pfad zum Script z.B. /var/www....> parameter1 parameter 2..."

Also in meinem Fall /var/www.rothe-immobilien.com/typo3/cli_dispatch.phpsh openImmoImport> parameter1 parameter 2..."

Aber er nimmt nichts an da ich nur URL zum CronJOb editieren eingeben kann!

Hier mal ein Screen: http://www.rothe-immobilien.com/screens/screenshot.jpg

Bearbeitet von Ltd.Lupo
Geschrieben

Wenn ich den CronJob lediglich mit der URL www.rothe-immobilien.com/typo3/cli_dispatch.phpsh ohne den Aufruf openImmoImport laufen lasse bekomme ich folgende Mail mit diesem Inhalt...

#! /usr/local/bin/php -q

<?php

/***************************************************************

*  Copyright notice

*

*  (c) 2005-2008 Kasper Skaarhoj (kasperYYYY@typo3.com)

*  All rights reserved

*

*  This script is part of the TYPO3 project. The TYPO3 project is

*  free software; you can redistribute it and/or modify

*  it under the terms of the GNU General Public License as published by

*  the Free Software Foundation; either version 2 of the License, or

*  (at your option) any later version.

*

*  The GNU General Public License can be found at

*  http://www.gnu.org/copyleft/gpl.html.

*  A copy is found in the textfile GPL.txt and important notices to the license

*  from the author is found in LICENSE.txt distributed with these scripts.

*

*

*  This script is distributed in the hope that it will be useful,

*  but WITHOUT ANY WARRANTY; without even the implied warranty of

*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

*  GNU General Public License for more details.

*

*  This copyright notice MUST APPEAR in all copies of the script!

***************************************************************/


/**

 * Command Line Interface module dispatcher

 *

 * $Id: cli_dispatch.phpsh 3332 2008-03-01 10:25:21Z masi $

 *

 * @author      Kasper Skaarhoj <kasperYYYY@typo3.com>

 *

 * This script takes a "cliKey" as first argument and uses that to look up the path of the script to include in the end.

 * See configuration of this feature in $TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'].

 * The point is to have only ONE script dealing with the environment initialization while the actual processing is all a developer should care for.

 *

 */


if (PHP_SAPI!='cli') {

	die('Not called from a command line interface (eg. a shell or scheduler).'.chr(10));

}


	// Defining circumstances for CLI mode:

define('TYPO3_cliMode', TRUE);


	// Get path to this script

$temp_PATH_thisScript = isset($_SERVER['argv'][0]) ? $_SERVER['argv'][0] : (isset($_ENV['_']) ? $_ENV['_'] : $_SERVER['_']);


	// Figure out if the path is relative

$relativePath = FALSE;

if (stristr(PHP_OS,'win') && !stristr(PHP_OS,'darwin')) {

		// Windows

	if (!preg_match('/^([A-Z]?\\\/', $temp_PATH_thisScript)) {

		$relativePath = TRUE;

	}

} else {

		// *nix, et al

	if ($temp_PATH_thisScript{0} != '/') {

		$relativePath = TRUE;

	}

}


	// Resolve path

if ($relativePath) {

	$workingDirectory = $_SERVER['PWD'] ? $_SERVER['PWD'] : getcwd();

	if ($workingDirectory) {

		$temp_PATH_thisScript =

			$workingDirectory.'/'.ereg_replace('\.\/','',$temp_PATH_thisScript);

		if (!@is_file($temp_PATH_thisScript)) {

			die ('Relative path found, but an error occured during resolving of the absolute path: '.$temp_PATH_thisScript.chr(10));

		}

	} else {

		die ('Relative path found, but resolving absolute path is not supported on this platform.'.chr(10));

	}

}


	// Define absolute path to this script

define('PATH_thisScript',$temp_PATH_thisScript);


if (!isset($_SERVER['argv'][1]))	{

	die ('The first argument must be a valid key.'.chr(10));

}


	// First argument is a key that points to the script configuration

define('TYPO3_cliKey', $_SERVER['argv'][1]);


	// Include init file:

require(dirname(PATH_thisScript).'/init.php');


if (defined('TYPO3_cliInclude')) {

	include(TYPO3_cliInclude);

} else {

	die('No include file configured for key "'.TYPO3_cliKey.'".'.chr(10));

}


?>

[/code]

Was immer ich daraus auch resultieren soll....? Aber der eigentliche Aufruf [b]openImmoImport[/b] hinter dem CronJob fehlt ja!

Geschrieben

Dann schreib Dir doch ein PHP Script das dieses Script mit den Parametern aufruft. Aus Deiner Weboberfläche startest Du dann Dein neues Script

Dein Passwort und Benutzername sind im Klartext zu sehen

Edit:

Wie Du siehst "Command Line Interface module dispatcher" ist das ein Script, das über die Kommandozeile ausgeführt wird

Geschrieben

Also verstee ich das richtig, ich erstelle eine php.Datei die ich jetzt einfach mal import.php benenne. In diese Datei binde ich den zuvor erhaltenen Code ein. Wäre dann ja dieser Code:

#! /usr/local/bin/php -q

<?php


/**

 * Command Line Interface module dispatcher

 *

 * $Id: cli_dispatch.phpsh 3332 2008-03-01 10:25:21Z masi $

 *

 * @author      Kasper Skaarhoj <kasperYYYY@typo3.com>

 *

 * This script takes a "cliKey" as first argument and uses that to look up the path of the script to include in the end.

 * See configuration of this feature in $TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'].

 * The point is to have only ONE script dealing with the environment initialization while the actual processing is all a developer should care for.

 *

 */


if (PHP_SAPI!='cli') {

	die('Not called from a command line interface (eg. a shell or scheduler).'.chr(10));

}


	// Defining circumstances for CLI mode:

define('TYPO3_cliMode', TRUE);


	// Get path to this script

$temp_PATH_thisScript = isset($_SERVER['argv'][0]) ? $_SERVER['argv'][0] : (isset($_ENV['_']) ? $_ENV['_'] : $_SERVER['_']);


	// Figure out if the path is relative

$relativePath = FALSE;

if (stristr(PHP_OS,'win') && !stristr(PHP_OS,'darwin')) {

		// Windows

	if (!preg_match('/^([A-Z]?\\\/', $temp_PATH_thisScript)) {

		$relativePath = TRUE;

	}

} else {

		// *nix, et al

	if ($temp_PATH_thisScript{0} != '/') {

		$relativePath = TRUE;

	}

}


	// Resolve path

if ($relativePath) {

	$workingDirectory = $_SERVER['PWD'] ? $_SERVER['PWD'] : getcwd();

	if ($workingDirectory) {

		$temp_PATH_thisScript =

			$workingDirectory.'/'.ereg_replace('\.\/','',$temp_PATH_thisScript);

		if (!@is_file($temp_PATH_thisScript)) {

			die ('Relative path found, but an error occured during resolving of the absolute path: '.$temp_PATH_thisScript.chr(10));

		}

	} else {

		die ('Relative path found, but resolving absolute path is not supported on this platform.'.chr(10));

	}

}


	// Define absolute path to this script

define('PATH_thisScript',$temp_PATH_thisScript);


if (!isset($_SERVER['argv'][1]))	{

	die ('The first argument must be a valid key.'.chr(10));

}


	// First argument is a key that points to the script configuration

define('TYPO3_cliKey', $_SERVER['argv'][1]);


	// Include init file:

require(dirname(PATH_thisScript).'/init.php');


if (defined('TYPO3_cliInclude')) {

	include(TYPO3_cliInclude);

} else {

	die('No include file configured for key "'.TYPO3_cliKey.'".'.chr(10));

}


?>

[/code]

...und hier kann ich den Pfad "dispatch.phpsh openImmoImport" zur Ausführun´g dann einbinden oder wie?

Im meiner Administrationsoberfläche würde ich dann am Ende bei der URL für den CronJob auf die import.php verweisen?

Geschrieben

Bitte benutze einmal eine Suchmaschine Deiner Wahl verwenden, es gibt eine Menge Tutorials zum Command Line Interface von PHP. Es gibt dazu auch eine eigene Webseite, die sich auf Platz 1 bei der Suchmaschine mit oo findet

Geschrieben (bearbeitet)

Hallo

Ich bin jetzt bezüglich dem Command Line Interface einmal nach folgendem Tutorial vorgegangen.

TYPO3 CLI (Command Line Interface) oder Cronjobs mit TYPO3 | Blogix

Punkt6 Aufrufen des Skripts mit absolutem Pfad (z.B. “/var/www/typo3/cli_dispatch.phpsh extensionkey job”) verstehe ich hier nicht so ganz...!

Ursprünglich sollte mein Aufruf ja lauten: www.rothe-immobilien.com/typo3/cli_dispatch.phpsh openImmoImport

Also würde ich in dem Fall wie Punkt 6 beschrieben eingeben

/var/www/typo3/cli_dispatch.phpsh openImmoImport, soweit so gut!

Nur wo tätige ich die Eingabe um das ganze aufzurufen? Im Browser?

Bearbeitet von Ltd.Lupo
Geschrieben

Wenn jetzt mit Crontab die Administrationsoberfläche gemeint ist über die ich die Cronjobs anlege stehe ich ja letztendlich wieder vor dem selben Problem :(

/var/www/typo3/cli_dispatch.phpsh openImmoImport nimmt er nicht wegen der Leerzeile!

Es ist halt das erste mal das ich für eine Extension einen CronJob nutzen will!

Geschrieben

/var/www/typo3/cli_dispatch.phpsh openImmoImport nimmt er nicht wegen der Leerzeile!

Ist das so schwer? Du erstellst ein PHP Script, das keine Parameter erwartet, dieses trägst Du in Deinen Cronjob ein. In _diesem_ PHP rufst Du dann das Original Script mit den Parametern auf.

Geschrieben

Ok....habe jetzt einfach mal eine test.php mit folgendem Inhalt erstellt und diese über den Cronjob verlinkt!

<?php
/var/www/typo3/cli_dispatch.phpsh openImmoImport
?>[/PHP]

Wahrscheinlich ist der Aufruf aber falsche denke ich!

Geschrieben

Wahrscheinlich ist der Aufruf aber falsche denke ich!

So ist das auch falsch, weil das kein syntaktisch korrekter PHP Aufruf ist.

Du solltest erst einmal klären, was Deine Cronoberfläche ausführen kann und wie es die Scripte ausführt, als nächstes wäre zu klären, ob Befehle in Deiner PHP Installation gesperrt sind. Es gibt Möglichkeiten aus einem PHP Kommandozeilen Aufrufe durchzuführen, wenn diese erlaubt sind.

Als Alternative wäre das Originalscript so anzupassen, dass der Parameter eben fest im Script hinterlegt ist und dann das Originalscript via Cron ohne Parameter aufzurufen

Geschrieben

Ok, wenn ich es richtig verstehe im Originalscript (in meinem Fall die cli_dispatch.phpsh)

#! /usr/local/bin/php -q
<?php
/***************************************************************
* Copyright notice
*
* (c) 2005-2008 Kasper Skaarhoj (kasperYYYY@typo3.com)
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
* A copy is found in the textfile GPL.txt and important notices to the license
* from the author is found in LICENSE.txt distributed with these scripts.
*
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

/**
* Command Line Interface module dispatcher
*
* $Id: cli_dispatch.phpsh 3332 2008-03-01 10:25:21Z masi $
*
* @author Kasper Skaarhoj <kasperYYYY@typo3.com>
*
* This script takes a "cliKey" as first argument and uses that to look up the path of the script to include in the end.
* See configuration of this feature in $TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'].
* The point is to have only ONE script dealing with the environment initialization while the actual processing is all a developer should care for.
*
*/

set_time_limit(0);
ignore_user_abort(true);

if (PHP_SAPI!='cli') {
die('Not called from a command line interface (eg. a shell or scheduler).'.chr(10));
}

// Defining circumstances for CLI mode:
define('TYPO3_cliMode', TRUE);

// Get path to this script
$temp_PATH_thisScript = isset($_SERVER['argv'][0]) ? $_SERVER['argv'][0] : (isset($_ENV['_']) ? $_ENV['_'] : $_SERVER['_']);

// Figure out if the path is relative
$relativePath = FALSE;
if (stristr(PHP_OS,'win') && !stristr(PHP_OS,'darwin')) {
// Windows
if (!preg_match('/^([A-Z]?\\\/', $temp_PATH_thisScript)) {
$relativePath = TRUE;
}
} else {
// *nix, et al
if ($temp_PATH_thisScript{0} != '/') {
$relativePath = TRUE;
}
}

// Resolve path
if ($relativePath) {
$workingDirectory = $_SERVER['PWD'] ? $_SERVER['PWD'] : getcwd();
if ($workingDirectory) {
$temp_PATH_thisScript =
$workingDirectory.'/'.ereg_replace('\.\/','',$temp_PATH_thisScript);
if (!@is_file($temp_PATH_thisScript)) {
die ('Relative path found, but an error occured during resolving of the absolute path: '.$temp_PATH_thisScript.chr(10));
}
} else {
die ('Relative path found, but resolving absolute path is not supported on this platform.'.chr(10));
}
}

// Define absolute path to this script
define('PATH_thisScript',$temp_PATH_thisScript);

if (!isset($_SERVER['argv'][1])) {
die ('The first argument must be a valid key.'.chr(10));
}

// First argument is a key that points to the script configuration
define('TYPO3_cliKey', $_SERVER['argv'][1]);

// Include init file:
require(dirname(PATH_thisScript).'/init.php');

if (defined('TYPO3_cliInclude')) {
include(TYPO3_cliInclude);
} else {
die('No include file configured for key "'.TYPO3_cliKey.'".'.chr(10));
}

?>[/PHP]

den Aufruf "openImmoImport" einzubinden und dann lediglich via Cronjob die cli_dispatch.phpsh einzubinden!

Das hatte ich auch schon in Erwägung gezogen, nur reichen meine php Kenntnisse für diesen Fall nicht aus!

Geschrieben

Das hatte ich auch schon in Erwägung gezogen, nur reichen meine php Kenntnisse für diesen Fall nicht aus!

Bevor Du mir eine PM schickst, um ein Angebot von mir zu erfragen, solltest Du erst einmal überlegen, ob das der richtige Weg ist. Ich habe keinen Hinweis darauf gegeben, dass ich dieses durchführe, Du solltest also nicht irgendwelche Leute belästigen, nur weil Du es selbst nicht kannst, dafür gibt es den Anzeigemarkt

Geschrieben
Bevor Du mir eine PM schickst, um ein Angebot von mir zu erfragen, solltest Du erst einmal überlegen, ob das der richtige Weg ist. Ich habe keinen Hinweis darauf gegeben, dass ich dieses durchführe, Du solltest also nicht irgendwelche Leute belästigen, nur weil Du es selbst nicht kannst, dafür gibt es den Anzeigemarkt

Sorry, ich wollte Dir nicht zu Nahe treten!

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...