Отсутствует DLL при запуске как скрипт - PullRequest
8 голосов
/ 31 июля 2010

Я пытаюсь заставить скрипт PHP запускаться каждые 30 минут на моем сервере (Win XP SP3, xampp 1.7.3). Для этого я запускаю следующий скрипт (update.cmd) с помощью планировщика задач MS

SET PATH="C:\xampp\PHP"
start php.exe \htdocs\update_dashboard.php

Я использую расширение oci8 php на своем веб-сервере, но когда я запускаю этот скрипт, он выдает мне ошибки, из-за которых php.exe не может найти необходимую DLL для расширения oci8. Я получаю следующие ошибки:

This application has failed to start because OCI.dll was not found. Re-installing the application may fix this problem.</p> <p>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 ]

3 голосов
/ 07 апреля 2014

Я обнаружил эту проблему, когда я переключился с php 5.3 non thread safe на php 5.3 thread safe на windows 7, и поставил галочку установить все

Я исправил проблему, прокомментировав extension = php_oci8.dll, extension= php_oci8_11g.dll, расширение = php_pdo_oci.dll в файле php.ini

У меня также были проблемы с расширением sybase, требующим libcs.dll, который я решил, удалив "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 в соответствующих местах, для всех, кому не нужны эти базы данныхпросто отключите расширения php, и все должно работать нормально:)

Ant

2 голосов
/ 12 августа 2010

Я решил проблему, изменив скрипт. Сейчас:

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

Спасибо за помощь.

1 голос
/ 04 августа 2013

Я запустил команду php -m.Выяснилось, что OCI.dll моей системы поврежден или отсутствует.Я восстановил его, запустив sfc / scannow в окне запуска, перезагрузил, система переустановила его, и он был запущен с моими расширениями теперь все работает.

1 голос
/ 31 июля 2010

Проверьте файл php.ini, который использует php, запустив phpinfo () из командной строки, и посмотрите, какие расширения включены в этом файле. Для php очень удобно использовать другой файл php.ini при запуске из командной строки; и xampp по умолчанию использует другой файл php.ini. Вы также можете указать, какой файл php.ini использовать с ключом -c

.
0 голосов
/ 01 августа 2010

Правильно ли я, что C:\instantclient_11_2 и C:\oracle\ora92\bin содержат OCI.DLL?Из-за порядка пути вы можете загрузить неправильную DLL.Когда я читаю Какую OCI8 DLL использовать в PHP 5.3 , вам нужна другая строка в php.ini в зависимости от версии клиента Oracle.В настоящее время у меня нет доступа к компьютеру с oracle, поэтому я не могу это проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...