Fehlende DLL, wenn sie als Skript ausgeführt wird

8

Ich versuche, ein PHP-Skript alle 30 Minuten auf meinem Server laufen zu lassen (Win XP SP3, xampp 1.7.3). Dazu führe ich das folgende Skript (update.cmd) mit dem MS Task Scheduler

aus %Vor%

Ich verwende die oci8 php-Erweiterung auf meinem Webserver, aber wenn ich dieses Skript ausführe, gibt es mir Fehler, dass php.exe die notwendige DLL für die oci8-Erweiterung nicht finden kann. Ich bekomme folgende Fehler:

This application has failed to start because OCI.dll was not found. Re-installing the application may fix this problem.

PHP Start: Dynamische Bibliothek konnte nicht geladen werden 'C: \ xampp \ php \ ext \ php_oci8.dll' - Die angegebene Modulanzahl wurde nicht gefunden.

Ich weiß, dass die Datei da ist und ich bekomme diese Fehler nicht, wenn der PHP durch Apache läuft, führe ich die falsche Kopie von php.exe aus? Irgendwelche Ideen warum nicht? Muss mein PATH anders eingestellt sein? Mein Windows PATH enthält:

C:\instantclient_11_2;C:\oracle\ora92\bin;C:\Program Files\Oracle\jre.3.1\bin;C:\Program Files\Oracle\jre.1.8\bin;C:\Program Files\ActiveState Komodo Edit 5\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Altiris\Software Virtualization Agent\

Danke für Ihre Hilfe.

    
The_Denominater 30.07.2010, 21:32
quelle

5 Antworten

2

Ich habe das Problem auf eine Art gelöst, indem ich das Skript geändert habe. Es ist jetzt:

C:\xampp\PHP\php.exe -f C:\xampp\htdocs\php_scripts\utils\update_dashboard.php

Danke für die Hilfe.

    
The_Denominater 12.08.2010, 17:59
quelle
3

Ich habe dieses Problem gefunden, wenn ich von php 5.3 nicht threadsicher auf php 5.3 thread sicher auf Windows 7 umschalte und alles installiert habe

Ich habe das Problem behoben, indem ich extension = php_oci8.dll, extension = php_oci8_11g.dll, extension = php_pdo_oci.dll in der php.ini

auskommentiert habe

Ich hatte auch Probleme mit der Sybase-Erweiterung wollte eine libcs.dll, die ich gelöst habe durch Entfernen von "extension = php_sybase_ct.dll"

zB

%Vor%

Vermutlich, wenn Sie Sybase- und Oracle-Datenbankverbindungen benötigen, installieren die Standardclients oci.dll und libcs.dll an den entsprechenden Stellen, für alle anderen, die diese dbs nicht benötigen, deaktivieren Sie einfach die php-Erweiterungen und es sollte laufen gut:)

Ant

    
aqm 07.04.2014 08:44
quelle
1

Überprüfen Sie die php.ini-Datei, die php verwendet, indem Sie eine phpinfo () von der Befehlszeile aus ausführen und nachsehen, welche Erweiterungen in dieser Datei aktiviert sind. Es ist durchaus notwendig, dass php so eingestellt wird, dass es eine andere php.ini-Datei verwendet, wenn es über die Befehlszeile ausgeführt wird. und xampp verwendet standardmäßig eine andere php.ini-Datei. Sie können ihm auch sagen, welche Datei php.ini mit der Option -c verwenden soll     

Mark Baker 30.07.2010 21:47
quelle
1

Ich habe den Befehl php -m ausgeführt. Es stellte sich heraus, dass die OCI.dll meines Systems korrupt oder fehlend war. Ich habe es wiederhergestellt, indem ich sfc / scannow in der run-Box ausgeführt habe, neu gestartet habe, das System neu installiert habe und es lief und lief mit meinen Erweiterungen jetzt alles.

    
JamLizzy101 04.08.2013 10:51
quelle
0

Stimmt es, dass sowohl C:\instantclient_11_2 als auch C:\oracle\ora92\bin eine OCI.DLL enthalten? Wegen der Reihenfolge des Pfades laden Sie möglicherweise die falsche DLL. Wenn ich Welche OCI8 DLL in PHP 5.3 verwenden soll , benötigt man eine andere Zeile im PHP. ini abhängig von der Version des Oracle-Clients. Ich habe derzeit keinen Zugang zu einem PC mit Orakel, also kann ich das nicht bestätigen.

    
wimh 01.08.2010 17:56
quelle

Tags und Links