2013-01-18 43 views
5

Tôi đang cố gắng kết nối với cơ sở dữ liệu Sybase bằng PHP5. Tôi tin rằng tôi đã biên dịch thành công PHP với PDO_DBLIB, dưới dạng phpinfo() liệt kê dblib trong trình điều khiển PDO và freetds làm hương vị pdo_dblib.Cách kết nối với Sybase qua PHP

Tuy nhiên, khi tôi cố gắng để kiểm tra kết nối, tôi nhận được một lỗi khi đọc:

'PDOException' with message 'could not find driver'

Tôi đang cố gắng để kết nối với một máy chủ trên mạng LAN của tôi với mã này:

$dbh = new PDO("sybase:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]'); 

Bất kỳ đề xuất sẽ được đánh giá rất cao!

+0

Có vẻ như bạn không có tài xế cài đặt và kích hoạt trong php.ini Bạn có thể thử lái xe thử nghiệm này: http: // php .net/manual/en/ref.pdo-dblib.php – shark555

Trả lời

0

PDO sẽ không hoạt động hoặc ít nhất không có hỗ trợ PDO Sybase cho php. Trên Windows, bạn có thể sử dụng ODBC và PDO_SQLSRV hoặc PDO_ODBC, có thể âm thanh lạ, nhưng nó sẽ hoạt động.

tùy chọn thứ hai và tôi muốn giới thiệu nó, là để kết nối trực tiếp đến Sybase (SqlAnywhere), nhưng bạn cần phải cài đặt SQL Anywhere PHP Module

+0

Zdenek Machek, cảm ơn liên kết tới Mô-đun PHP bất kỳ ở đâu. – zwiebelspaetzle

+0

Tôi đang cố gắng sử dụng SQL Anywhere PHP Module, nhưng khi tôi bắt đầu httpd, tôi nhận được lỗi này: "Các thư viện máy khách SQLAnywhere không thể tải được. Vui lòng đảm bảo rằng libdbcapi_r.so có thể được tìm thấy trong biến môi trường LD_LIBRARY_PATH của bạn." Tôi đã thêm "SetEnv LD_LIBRARY_PATH/opt/sqlanywhere12/lib64" vào tệp httpd.conf của mình. Tuy nhiên, phpinfo vẫn hiển thị Môi trường Apache LD_LIBRARY_PATH là/usr/local/apache2/lib. Bất kỳ đề xuất nào? – zwiebelspaetzle

+0

Có, trên máy của bạn cần phải được cài đặt Sybase SqlAnywhere hoặc ít nhất SqlAnywhere khách hàng và thư viện này cần phải được thêm vào đường dẫn hệ thống, xem "echo $ PATH" –

0

Nếu bạn đang sử dụng Ubuntu bạn có thể đặt LD_LIBRARY_PATH bên envvars và có vẻ như để đọc. .. vẫn cố gắng tìm một cách để làm cho nó dính vào các hệ thống dựa trên RHEL ... Windows Tôi không quá chắc chắn về hy vọng bạn có thể thiết lập một hệ thống biến rộng dưới máy tính của tôi -> properties -> nâng cao tùy chọn vv vv

Nếu đang sử dụng hệ thống dựa trên RHEL, có thể tốt hơn để bao gồm: xuất LD_LIBRARY_PATH =/path/to/library/trong tập lệnh khởi động lại httpd (hãy kiểm tra xem nó có tải/etc/sysconfig/httpd và nếu như vậy thêm dòng trong đó - bây giờ khởi động lại apache và bạn sẽ thấy một số hoạt động.

0

Bạn nên sử dụng dblib thay vì sybase, như thế này:

$dbh = new PDO("dblib:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]'); 
Các vấn đề liên quan