Probleme mit .bat-Erstellung zur Ausführung von .php mit Win-Aufgabenplanung

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

  • Probleme mit .bat-Erstellung zur Ausführung von .php mit Win-Aufgabenplanung

    Hallo Leute, ich stehe aktuelle davor eine .php Datei mit einem Cronjob ausführen zu lassen.

    Da ich Windows Vista nutze, stehen mir natürlich nicht die "original" Cronjobs des UNIX-Systems zur Verfügung. Ich muss mich mit der Windows Aufgabenplanung begnügen. Nach meinem aktuellen Wissensstand muss ich dafür eine .bat oder .cmd Datei schreiben mittels der ich den PHP-Skript ausführen lasse. Wenn man die PHP-Datei direkt ansteuert, wird sie einfach nur im Editor geöffnet.

    Soweit, so gut. Nach längerer Internet- und Forenrecherche war eigentlich alles klar: In die Batch-Datei muss ich einfach nur folgendes reinschreiben:

    C:\Programme\EasyPHP-5.3.3\php\php.exe -f C:\Programme\EasyPHP-5.3.3\www\cron.php
    bzw.:
    C:\Programme\EasyPHP-5.3.3\php\php.exe C:\Programme\EasyPHP-5.3.3\www\cron.php
    (das -f soll ja laut manual nicht unbedingt nötig sein)

    Das Problem, weder die Batch- noch die command-Datei machen irgendwas...

    Da ich bei meiner Recherche nur darauf gestoßen bin, das es so laufen müsste, bin ich jetzt ein bissl überfordert...

  • #2
    geh mal auf <Start>-><Ausführen> .. dann gibst du cmd ein .. alternativ -> Zubehör : Eingabeaufforderung...

    im erscheinenden Fenster gibst du jetzt den Befehl der in die CMD / BAT rein soll mal am prompt ein

    wichtig ist natürlich insbesondere, dass die Pfade stimmen ...

    Leerzeichen im Pfad -> das ganze bitte in Anführungszeichen

    Du nutzt schon was neueres wie Vista oder Windows 7 ?.. bei den beiden gibt es C:\Programme nicht wirklich - das gaukelt dir der Explorer von windows nur vor ... der wirkliche Pfad wäre dann "C:\program files\EasyPHP......php.exe" -f "C:\program files\EasyPHP...cron.php" - aus diesem Grunde solltest du vielleicht dein EasyPHP krams nochmal neu installieren in einen leicht zu merkenden PFad wie c:\www
    [font=Verdana]
    Wer LESEN kann, ist klar im Vorteil!
    [/font]

    Kommentar


    • #3
      Okay, ärgerlich.. anscheinend kennt er "mysql_connect()" nicht...

      Call to undefined function mysql_connect() in C:/......
      Ich hoffe mal nicht das ein Datenbankzugriff per PHP durch ne bat/cmd nicht möglich ist....

      Kommentar


      • #4
        das Problem ist weniger mysql_connect - du musst ihm beim Auruf "zu Fuß" den Library Path mitteilen, wo er die mysql-Erweiterung findet - normalerweise übernimmt das die Webserver Konfiguration - aber das läuft ja nun ohne Webserver
        [font=Verdana]
        Wer LESEN kann, ist klar im Vorteil!
        [/font]

        Kommentar


        • #5
          Sorry wenn ich so dumm frage, aber ich bin kein Informatiker und arbeite mich für ne Studienarbeit seit zwei Wochen in die Thematik ein...

          Also wie teile ich "zu Fuß" die Programmbibliothek mit? Denke mal es geht um:
          C:\Program Files\EasyPHP-5.3.3\php\ext\php_mysql.dll

          wobei da auch noch nen haufen anderer php_mysqlirgendwas.dll's sind...

          Hab mir das entsprechende manual gerade nochmal durchgelesen, finde da aber nichts was mir jetzt logisch erscheint um die bibliothek einzubinden, außer -z vieleicht?....

          Kommentar


          • #6
            Wenn die MySQL-Extension schon da ist, musst du sie entweder bei jedem Aufruf des PHP-CLI mit -d laden (ziemlich kompliziert, vielleicht gehts auch gar nicht - habs nie versucht) oder du machst das einmal in der php.ini, die vom PHP-CLI verwendet wird ( php -i | grep '\.ini').

            Kommentar


            • #7
              Prüf mal mit einem einfachen <?php phpinfo(); ?> Script, dass du per Kommandozeile aufrufst, welche php.ini benutzt wird.

              In dieser ini-Datei kannst du dann die mysql-Extension einbinden.
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                Soo, hab jetzt ordentlich rumgesucht und bin noch mehr verwirrt... denn anscheinend ist extension=php_mysql.dll schon gesetzt... Könnte es letztendlich am EasyPHP-Build liegen das sich da was mit dem Win cmd-interpreter nicht verträgt oder so?

                Hier der entsprechende Ini-Eintrag: Alles ohne ; davor wird automatisch geladen:
                ;;;;;;;;;;;;;;;;;;;;;;
                ; Dynamic Extensions ;
                ;;;;;;;;;;;;;;;;;;;;;;
                ; If you wish to have an extension loaded automatically, use the following
                ; syntax:
                ;
                ; extension=modulename.extension
                ;
                ; For example, on Windows:
                ;
                ; extension=msql.dll
                ;
                ; ... or under UNIX:
                ;
                ; extension=msql.so
                ;
                ; ... or with a path:
                ;
                ; extension=/path/to/extension/msql.so
                ;
                ; If you only provide the name of the extension, PHP will look for it in its
                ; default extension directory.
                ;
                ; Windows Extensions
                ; Note that ODBC support is built in, so no dll is needed for it.
                ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
                ; extension folders as well as the separate PECL DLL download (PHP 5).
                ; Be sure to appropriately set the extension_dir directive.
                ;PHPExt
                extension=php_bz2.dll
                ;extension=php_curl.dll
                ;extension=php_dba.dll
                ;extension=php_exif.dll
                ;extension=php_fileinfo.dll
                extension=php_gd2.dll
                ;extension=php_gettext.dll
                ;extension=php_gmp.dll
                ;extension=php_intl.dll
                ;extension=php_imap.dll
                ;extension=php_interbase.dll
                ;extension=php_ldap.dll
                extension=php_mbstring.dll
                ;extension=php_ming.dll
                ;extension=php_mssql.dll
                extension=php_mysql.dll
                extension=php_mysqli.dll
                ;extension=php_oci8.dll
                ;extension=php_oci8_11g.dll
                ;extension=php_openssl.dll
                ;extension=php_pdo_firebird.dll
                ;extension=php_pdo_mssql.dll
                extension=php_pdo_mysql.dll
                ;extension=php_pdo_oci.dll
                ;extension=php_pdo_odbc.dll
                ;extension=php_pdo_pgsql.dll
                ;extension=php_pdo_sqlite.dll
                ;extension=php_pgsql.dll
                ;extension=php_phar.dll
                ;extension=php_pspell.dll
                ;extension=php_shmop.dll
                ;extension=php_snmp.dll
                ;extension=php_soap.dll
                ;extension=php_sockets.dll
                ;extension=php_sqlite.dll
                extension=php_sqlite3.dll
                ;extension=php_sybase_ct.dll
                ;extension=php_tidy.dll
                ;extension=php_xmlrpc.dll
                ;extension=php_xsl.dll
                ;extension=php_zip.dll
                ;/PHPExt

                Kommentar


                • #9
                  Entweder hast du nicht in die richtige php.ini geschaut oder PHP kann die Extension aus irgendeinem Grund nicht laden.
                  Führe im Terminal mal folgendes aus:
                  Code:
                  [I]C:\Programme\EasyPHP-5.3.3\php\php.exe -r 'error_reporting(E_ALL); ini_set("display_errors", 1); echo extension_loaded("mysql");'[/I]

                  Wird eine 0 ausgegeben? Dann weiter mit
                  Code:
                  [I]C:\Programme\EasyPHP-5.3.3\php\php.exe -r 'error_reporting(E_ALL); ini_set("display_errors", 1); echo ini_get("extension_dir");'[/I]

                  Wird
                  C:\Program Files\EasyPHP-5.3.3\php\ext ausgegeben? Dann weiter mit
                  Code:
                  [I]C:\Programme\EasyPHP-5.3.3\php\php.exe -r 'error_reporting(E_ALL);  ini_set("display_errors", 1); echo function_exists("mysql_connect");'[/I]

                  Wird eine 0 ausgegeben? Dann zeig uns bitte die Ausgabe von
                  Code:
                  [I]C:\Programme\EasyPHP-5.3.3\php\php.exe -r  'phpinfo(INFO_MODULES);'[/I]

                  Kommentar


                  • #10
                    Ist das auch wirklich die ini, die genutzt wird, wenn PHP von der Konsole aus aufgerufen wird?
                    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                    Schön - etwas Geschichte kann ja nicht schaden.
                    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                    Kommentar


                    • #11
                      Soo, da bin ich wieder. Tut mir leid für die Pause, aber hier in Südafrika kackt manchmal das Netz ab... -.-

                      Also, mein cmd.exe Fenster hat nicht genügend Zeilen um das komplette phpinfo() darzustellen. Genau das gleiche Problem stellt sich mit phpinfo(INFO_MODULES); dar. Ich hab daher die phpinfo über das EasyPHP-Build abgerufen und dort wird die php.ini in ...EasyPHP-5.3.3\apache angegeben....
                      ....allerdings hab ich einen verdacht. Es gibt im EasyPHP-5.3.3\php ordner zwei Ini-Files in denen die dlls nicht freigegeben sind. Allerdings enden diese auf .ini-development und .ini-production . Ich hab schon versucht diese Dateien dahingehend zu ändern, allerdings ist es nicht möglich eine Datei mit diesen Endungen zu erstellen. Also Fehlermeldung lautet:
                      ... kann nicht erstellt werden.

                      Stellen sie sicher das Datei- und Pfadname richtig sind.
                      Also hättet ihr ne idee wie ich
                      a) Die dargestellten Zeilen der cmd.exe erweitern kann
                      b) Die Fehlermeldung beim speichern der ini-irgendwas umgehen kann?
                      Zuletzt geändert von DaBasha; 12.11.2010, 15:37.

                      Kommentar


                      • #12
                        a)
                        - Rechte Maustaste auf das Fenster mit der Eingabeaufforderung
                        - Register "Layout"
                        - Wert in "Fensterpuffergröße"->"Höhe" erhöhen

                        Den Höhe-Wert für die Fenstergröße selbst kannst du auch entsprechend für dein Display anpassen.

                        b)
                        Ein Editor wie Notepad++ kann auch Dateinamen abspeichern, die den Windows-Standard-Anwenungen nicht so schmecken.
                        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                        Schön - etwas Geschichte kann ja nicht schaden.
                        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                        Kommentar


                        • #13
                          richtige Antwort natürlich 'c' ..
                          Code:
                          [I][I]C:\Programme\EasyPHP-5.3.3\php\php.exe -r  'phpinfo(INFO_MODULES);' > c:\modules.txt[/I][/I]


                          der Text-Datei als Ausgabeziel ist herzlich egal, wie größ der Ausgabepuffer ist
                          [font=Verdana]
                          Wer LESEN kann, ist klar im Vorteil!
                          [/font]

                          Kommentar


                          • #14
                            jo, danke an euch beide!

                            So, hab mir dann mal die phpinfo ausgeben lassen und siehe da:
                            Configuration File (php.ini) path => C:\Windows
                            Loaded Configuration File => (none)
                            Scan this dir for additional .ini files => (none)
                            Additional ini files parsed => (none)
                            Okay, also müsste ich jetzt mit
                            "C:\program files\EasyPHP-5.3.3\php\php.exe" -c "C:\program files\EasyPHP-5.3.3\apache"|php.ini
                            dem eine neue .ini zuweisen, ooder??

                            Kommentar


                            • #15
                              wegen Ersatzposting gelöscht
                              Zuletzt geändert von eagle275; 12.11.2010, 15:54.
                              [font=Verdana]
                              Wer LESEN kann, ist klar im Vorteil!
                              [/font]

                              Kommentar

                              Lädt...
                              X