作为脚本运行时缺少DLL

时间:2010-07-30 21:32:01

标签: php batch-file xampp

我正在尝试在我的服务器上每30分钟运行一个PHP脚本(Win XP SP3,xampp 1.7.3)。 为此,我使用MS任务计划程序

运行以下脚本(update.cmd)
SET PATH="C:\xampp\PHP"
start php.exe \htdocs\update_dashboard.php

我在我的网络服务器上使用oci8 php扩展,但是当我运行该脚本时,它给了我错误,php.exe无法找到oci8扩展所需的dll。我收到以下错误:

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

PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_oci8.dll' - The specified module count not be found.

我知道文件在那里,当php运行apache时我没有得到那些错误,我运行的是错误的php.exe副本吗?任何想法为什么不呢?我的PATH必须设置不同吗?我的Windows PATH包括:

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

感谢您的帮助。

5 个答案:

答案 0 :(得分:3)

当我从Windows 5.3非线程安全切换到Windows 7上的php 5.3线程安全时我发现了这个问题,我勾选安装所有内容

我通过在php.ini中注释掉extension = php_oci8.dll,extension = php_oci8_11g.dll,extension = php_pdo_oci.dll修复了这个问题

我也遇到了想要libcs​​.dll的sybase扩展的问题,我通过删除" extension = php_sybase_ct.dll"

解决了这个问题。

例如

; at bottom of php.ini -->>
[PHP_BZ2]
extension=php_bz2.dll
[PHP_CURL]
extension=php_curl.dll
[PHP_ENCHANT]
extension=php_enchant.dll
[PHP_FILEINFO]
extension=php_fileinfo.dll
[PHP_GD2]
extension=php_gd2.dll
[PHP_GETTEXT]
extension=php_gettext.dll
[PHP_GMP]
extension=php_gmp.dll
[PHP_IMAP]
extension=php_imap.dll
[PHP_INTL]
extension=php_intl.dll
[PHP_LDAP]
extension=php_ldap.dll
[PHP_MBSTRING]
extension=php_mbstring.dll
[PHP_MYSQL]
extension=php_mysql.dll
[PHP_MYSQLI]
extension=php_mysqli.dll
;[PHP_OCI8]
;extension=php_oci8.dll
;[PHP_OCI8_11G]
;extension=php_oci8_11g.dll
[PHP_OPENSSL]
extension=php_openssl.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
;[PHP_PDO_OCI]
;extension=php_pdo_oci.dll
[PHP_PDO_ODBC]
extension=php_pdo_odbc.dll
[PHP_PDO_PGSQL]
extension=php_pdo_pgsql.dll
[PHP_PDO_SQLITE]
extension=php_pdo_sqlite.dll
[PHP_PGSQL]
extension=php_pgsql.dll
[PHP_SHMOP]
extension=php_shmop.dll
[PHP_SNMP]
extension=php_snmp.dll
[PHP_SOAP]
extension=php_soap.dll
[PHP_SOCKETS]
extension=php_sockets.dll
[PHP_SQLITE]
extension=php_sqlite.dll
[PHP_SQLITE3]
extension=php_sqlite3.dll
;[PHP_SYBASE_CT]
;extension=php_sybase_ct.dll
[PHP_TIDY]
extension=php_tidy.dll
[PHP_XMLRPC]
extension=php_xmlrpc.dll
[PHP_XSL]
extension=php_xsl.dll
[PHP_EXIF]
extension=php_exif.dll

猜测是否需要sybase和oracle数据库连接,标准客户端在适当的位置安装oci.dll和libcs​​.dll,对于其他不需要使用这些dbs的人,只需禁用php扩展,然后应该运行正常:))

蚂蚁

答案 1 :(得分:2)

我通过更改脚本以某种方式解决了问题。现在是:

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

感谢您的帮助。

答案 2 :(得分:1)

通过从命令行运行phpinfo()来检查php正在使用的php.ini文件,并查看该文件中启用了哪些扩展。从命令行运行时,将php设置为使用不同的php.ini文件是非常公开的。和xampp默认使用不同的php.ini文件。您还可以告诉它与-c开关一起使用的php.ini文件

答案 3 :(得分:1)

我运行了php -m命令。原来我的系统的OCI.dll损坏或丢失。我通过在运行框中运行sfc / scannow来恢复它,重新启动,系统重新安装它,并且它已经启动并且我的扩展程序现在都在运行。

答案 4 :(得分:0)

我是否认为C:\instantclient_11_2C:\oracle\ora92\bin都包含OCI.DLL?由于路径的顺序,您可能会加载错误的DLL。当我阅读Which OCI8 DLL to use in PHP 5.3时,你需要在php.ini中使用不同的行,具体取决于oracle客户端的版本。我目前无法访问带有oracle的电脑,所以我无法验证这一点。