| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

12-11-2010, 11:42
|
|
DaBasha
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 12
|
|
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...
|

12-11-2010, 12:02
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
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
__________________
Wer LESEN kann, ist klar im Vorteil!
|

12-11-2010, 12:16
|
|
DaBasha
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 12
|
|
Okay, ärgerlich.. anscheinend kennt er "mysql_connect()" nicht...
Zitat:
|
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....
|

12-11-2010, 13:03
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
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
__________________
Wer LESEN kann, ist klar im Vorteil!
|

12-11-2010, 13:31
|
|
DaBasha
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 12
|
|
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?....
|

12-11-2010, 13:48
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
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').
|

12-11-2010, 13:48
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
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.
__________________
Drelingdo
Krabonse
Simmannamando
|

12-11-2010, 14:31
|
|
DaBasha
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 12
|
|
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:
Zitat:
;;;;;;;;;;;;;;;;;;;;;;
; 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
|
|

12-11-2010, 14:47
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
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:
C:\Programme\EasyPHP-5.3.3\php\php.exe -r 'error_reporting(E_ALL); ini_set("display_errors", 1); echo extension_loaded("mysql");'
Wird eine 0 ausgegeben? Dann weiter mit
Code:
C:\Programme\EasyPHP-5.3.3\php\php.exe -r 'error_reporting(E_ALL); ini_set("display_errors", 1); echo ini_get("extension_dir");'
Wird C:\Program Files\EasyPHP-5.3.3\php\ext ausgegeben? Dann weiter mit
Code:
C:\Programme\EasyPHP-5.3.3\php\php.exe -r 'error_reporting(E_ALL); ini_set("display_errors", 1); echo function_exists("mysql_connect");'
Wird eine 0 ausgegeben? Dann zeig uns bitte die Ausgabe von
Code:
C:\Programme\EasyPHP-5.3.3\php\php.exe -r 'phpinfo(INFO_MODULES);'
|

12-11-2010, 14:48
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Ist das auch wirklich die ini, die genutzt wird, wenn PHP von der Konsole aus aufgerufen wird?
__________________
Drelingdo
Krabonse
Simmannamando
|

12-11-2010, 15:34
|
|
DaBasha
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 12
|
|
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:
Zitat:
... 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?
Geändert von DaBasha (12-11-2010 um 15:37 Uhr)
|

12-11-2010, 15:38
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
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.
__________________
Drelingdo
Krabonse
Simmannamando
|

12-11-2010, 15:46
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
richtige Antwort natürlich 'c' ..
Code:
C:\Programme\EasyPHP-5.3.3\php\php.exe -r 'phpinfo(INFO_MODULES);' > c:\modules.txt
der Text-Datei als Ausgabeziel ist herzlich egal, wie größ der Ausgabepuffer ist
__________________
Wer LESEN kann, ist klar im Vorteil!
|

12-11-2010, 15:48
|
|
DaBasha
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 12
|
|
jo, danke an euch beide!
So, hab mir dann mal die phpinfo ausgeben lassen und siehe da:
Zitat:
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??
|

12-11-2010, 15:51
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
wegen Ersatzposting gelöscht
__________________
Wer LESEN kann, ist klar im Vorteil!
Geändert von eagle275 (12-11-2010 um 15:54 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|