Superglobal funktioniert in Konsole nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Superglobal funktioniert in Konsole nicht

    Hallo zusammen,

    ich binde meine Servervariablen über eine externe Datei in meine PHP-Datei ein.

    PHP-Code:
    require($_SERVER['DOCUMENT_ROOT']."/Projektverwaltung/includes/server.inc"); 
    Rufe ich die PHP-Datei auf meinem Server über den Browser auf, dann funktioniert auch alles.
    Wenn ich nun die Datei über die Konsole von ubuntu aufrufen möchte mit

    Code:
    php import_txt.php
    dann erscheint diese Fehlermeldung:

    Code:
    PHP Warning:  require(/Projektverwaltung/includes/server.inc): failed to open stream: No such file or directory in /var/www/html/Projektverwaltung/geo/import_txt.php on line 7
    Warum funktioniert $_SERVER['DOCUMENT_ROOT'] über die Konsole nicht? Hintergrund der Sache ist, dass ich die Datei über crontab ausführen möchte, es dort aber auch nicht funktioniert.

    Vielen Dank im Voraus für Eure Antworten.

    fox_bw

  • #2
    Na warum wohl nicht? Du hast dann keinen Server und somit kann in $_SERVER auch nichts stehen.

    Kommentar


    • #3
      Hallo bandit600,

      Zitat von bandit600 Beitrag anzeigen
      Na warum wohl nicht? Du hast dann keinen Server und somit kann in $_SERVER auch nichts stehen.
      dies verstehe ich nicht. Sowohl die Anfrage über den Browser als auch die Anfrage über die Konsole werden auf dem selben Server ausgeführt. Wenn es doch im Browser funktioniert muss doch ein Server vorhanden sein und di Variable gesetzt sein. Warum dann über die Konsole nicht? Das ist mir zu hoch.

      fox_bw

      Kommentar


      • #4
        Wenn du über den Browser gehst, dann wird der Webserver angesprochen, in der Konsole wird PHP direkt aufgerufen

        Kommentar


        • #5
          Hallo Bandit600,

          vielen Dank für deine Erklärung, ist mir jetzt soweit klar.

          Ich bin auf die Sach emit der Konsole eigentlich nur gekommen, weil ich über crontab php-Skripte ausführen lassen wollte, un dies aber irgendwie nicht funktioniert. Deshalb wollte ich über die Konsole eben versuchen, ob das Skript funktioniert oder nicht.
          Gibt es eine Möglichkeit bei crontab sich Fehlermedlungen anzeigen zu lassen? Oder werden diese in eine LOG-Datei geschrieben? Oder kann man die Abfragen bei crontab simulieren?
          Ich weiß, dass diese Fragen in diesem Forum vielleicht nicht ganz passend sind.
          Sorry

          fox_bw

          Kommentar


          • #6
            Über die Konsole testen ist schon richtig, du musst bei den include-Anweisungen absolute Pfade verwenden und keine Server-Variablen benutzen, dann funktioniert das auch.

            Kommentar


            • #7
              Hallo bandit600,

              Zitat von bandit600 Beitrag anzeigen
              Über die Konsole testen ist schon richtig, du musst bei den include-Anweisungen absolute Pfade verwenden und keine Server-Variablen benutzen, dann funktioniert das auch.
              Danke für deine Anmerkung.

              Eine andere Möglichkeit der Fehlersuche warum crontab nicht richtig funktioniert gibt es nicht?

              fox_bw

              Kommentar


              • #8
                Du kannst die Ausgaben (reguläre und Fehler) zum Beispiel in eine Datei schreiben lassen:

                - https://unix.stackexchange.com/quest...om-within-cron

                Ansonsten ist es für deinen Anwendungsfall vielleicht sinnvoll, das Script einfach trotzdem über HTTP aufzurufen und nicht über das Dateisystem des Servers. Direkt über den PHP-Interpreter wäre es möglicherweise schöner, aber mit HTTP müsstest du es unter Umständen nicht umschreiben oder gar zwei Varianten verwalten. Dazu kannst du im cronjob zum Beispiel curl nutzen.

                Code:
                /usr/bin/curl -s 'http://example.org' > /dev/null

                Kommentar

                Lädt...
                X