it-swarm.com.de

Die Befehlszeilenschnittstellen-App JApplicationCli funktioniert nicht wie im Lernprogramm beschrieben

Ich habe eine Joomla-Website und arbeite an einer Joomla-Anwendung für die Befehlszeilenschnittstelle, die einige geplante Wartungsaufgaben ausführen würde. Beim Erstellen der CLI-App folge ich dem folgenden Artikel: https://docs.joomla.org/How_to_create_a_stand-alone_application_using_the_Joomla!_Platform

... und habe mir auch die Dateien in meinem "cli" -Verzeichnis angesehen, zum Beispiel garbabecron.php, um zu erfahren, wie das funktionieren soll.

Nachfolgend finden Sie meine Testdatei, die im Wesentlichen mit garbagecron.php identisch ist:

<?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * A command line cron job to trash expired cache data.
 */

// Initialize Joomla framework
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
    require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
    define('JPATH_BASE', dirname(__DIR__));
    require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

/**
 * Cron job to trash expired cache data.
 *
 * @since  2.5
 */
class GarbageCron extends JApplicationCli
{
    /**
     * Entry point for the script
     *
     * @return  void
     *
     * @since   2.5
     */
    public function doExecute()
    {
        $this->out("workin... \n");
        echo "still working... \n";
    }
}

echo "started... \n";
$cli = JApplicationCli::getInstance('GarbageCron')->execute();
echo "ready... \n";

Während der Entwicklung starte ich das test.php Datei von einem Terminal (in der Produktion wird sie von einem Cron-Job ausgelöst). Es scheint, dass der Code bis zu der Zeile ausgeführt wird, in der ich versuche, die JApplicationCli-Klasse zu erstellen und auszuführen, aber dann passiert nichts. Das Programm druckt den Trace "gestartet", sonst aber nichts. Es scheint, als ob die Objektinstanziierung fehlschlägt, aber ich erhalte auch keine Fehlermeldung im Terminal. Bitte beachten Sie die Terminal-Ausgabe unten:

[email protected] [~]# /usr/bin/php /home/gonative/public_html/dev/cli/test.php
Content-type: text/html; charset=UTF-8

started... 
[email protected] [~]# 

Was mache ich falsch? Das Tutorial schlägt eine etwas andere Syntax vor als die in der Datei garbagecron.php verwendete. Welches ist das richtige? Funktioniert die garbagecron.php überhaupt? Ich konnte das nicht beweisen.

Danke, W.

1
wanderlusted

Es stellte sich heraus, dass der obige Code gut ist. Ich habe es jedoch erneut mit der falschen PHP-Installation ausgeführt, die dazu geführt hat, dass der Konstruktor des übergeordneten Objekts von JApplicationCli unbemerkt beendet wurde. Läuft der Code gegen die richtige PHP-Programmdatei, funktioniert alles gut! Danke für die Hinweise!

0
wanderlusted

Normale Echobefehle funktionieren in CLI-Befehlen nicht. Versuchen Sie dies stattdessen: $this->out("started...");

0
YellowWebMonkey