2010-07-30 44 views
8

Tôi đang cố gắng lấy tập lệnh PHP chạy 30 phút một lần trên máy chủ của mình (Win XP SP3, xampp 1.7.3). Để làm như vậy Tôi đang chạy đoạn mã sau (update.cmd) sử dụng task scheduler MSThiếu DLL khi chạy dưới dạng tập lệnh

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

Tôi đang sử dụng phần mở rộng php oci8 trên máy chủ web của tôi, nhưng khi tôi chạy kịch bản mà nó mang lại cho tôi lỗi mà php.exe không thể tìm thấy dll cần thiết cho phần mở rộng oci8. Tôi nhận được các lỗi sau đây:

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.

Tôi biết rằng tập tin là có và tôi không có được những lỗi khi php được điều hành thông qua apache, tôi chạy bản sao sai php.exe? Bất kỳ ý tưởng tại sao không? PATH của tôi có phải được đặt khác nhau không? Của Windows PATH của tôi bao gồm:

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\

Nhờ sự giúp đỡ của bạn.

Trả lời

2

Tôi đã giải quyết vấn đề theo cách bằng cách thay đổi tập lệnh. Bây giờ là:

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

Cảm ơn sự giúp đỡ.

1

Kiểm tra tệp php.ini mà php đang sử dụng bằng cách chạy phpinfo() từ dòng lệnh và tìm xem tiện ích nào được bật trong tệp đó. Đó là khá commopn cho php được thiết lập để sử dụng một tập tin php.ini khác nhau khi chạy từ dòng lệnh; và xampp chắc chắn sử dụng tệp php.ini khác theo mặc định. Bạn cũng có thể cho biết tệp php.ini nào sử dụng với nút chuyển đổi -c

+2

Cảm ơn bạn đã trả lời.Tại thời điểm này tôi thậm chí không thể chạy một tập tin php đơn giản với 'phpinfo.php' bởi vì tôi không thể bắt đầu php ... –

0

Tôi có chính xác rằng cả hai C:\instantclient_11_2C:\oracle\ora92\bin chứa OCI.DLL? Bởi vì thứ tự của đường dẫn bạn có thể tải dll sai. Khi tôi đọc Which OCI8 DLL to use in PHP 5.3, bạn cần một dòng khác trong php.ini tùy thuộc vào phiên bản của ứng dụng khách. Tôi hiện không có quyền truy cập vào một máy tính với oracle, vì vậy tôi không thể xác minh điều này.

1

Tôi đã chạy lệnh php -m. Hóa ra rằng OCI.dll của hệ thống của tôi đã bị hỏng hoặc bị thiếu. Tôi phục hồi nó bằng cách chạy sfc/scannow trong hộp chạy, khởi động lại, hệ thống cài đặt lại nó, và nó đã được và chạy với các phần mở rộng của tôi bây giờ tất cả làm việc.

3

tôi thấy vấn đề này khi tôi chuyển từ php 5.3 không đề an toàn để php 5.3 chủ đề an toàn trên windows 7, và tôi đánh dấu cài đặt tất cả mọi thứ

Tôi cố định vấn đề này bằng cách bình luận ra extension = php_oci8.dll, extension = php_oci8_11g.dll, extension = php_pdo_oci.dll trong php.ini

tôi cũng có vấn đề với phần mở rộng Sybase muốn một libcs.dll, mà tôi giải quyết bằng cách loại bỏ "extension = php_sybase_ct.dll"

ví dụ

; 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 

Đoán xem bạn có cần kết nối cơ sở dữ liệu và cơ sở dữ liệu hay không, các máy khách chuẩn cài đặt oci.dll và libcs.dll ở những nơi thích hợp, cho những người khác không cần sử dụng các dbs này, chỉ cần vô hiệu hóa phần mở rộng php. fine :)

Ant

Các vấn đề liên quan