tôi đang cố gắng để có được những phần mở rộng pdo_odbc cho PHP được kích hoạt trên máy Mac của tôi mà đang chạy PHP 5.3 Đây là những gì tôi đã làm để cố gắng có được nó để làm việc:Cho phép mở rộng PHP pdo_odbc trên máy Mac OSX
Tôi đã cài đặt UnixODBC với brew
$ brew install unixodbc
Đã tải xuống nguồn cho PHP 5.3.8. Trong terminal tôi điều hướng đến thư mục pdo_odbc. Sau đó làm như sau.
$ phpize $ ./configure --with-pdo-odbc=unixODBC $ make
Đã xảy ra lỗi.
/Users/todd/Downloads/php-5.3.8/ext/pdo_odbc/pdo_odbc.c:43: error: ‘ZEND_MOD_END’ undeclared here (not in a function) /Users/todd/Downloads/php-5.3.8/ext/pdo_odbc/pdo_odbc.c: In function ‘zm_startup_pdo_odbc’: /Users/todd/Downloads/php-5.3.8/ext/pdo_odbc/pdo_odbc.c:135: warning: cast to pointer from integer of different size
Dựa trên một số blog tôi thay
ZEND_MOD_END
với{NULL,NUll, NULL}
và chạy làm một lần nữa. Lần này nó tuân thủ.Sau đó, tôi chạy "sudo make install" và cài đặt tiện ích ở đúng nơi. Tôi modifed php.ini để kích hoạt nó. Và nó hiển thị trong phpInfo()
Cho đến nay rất tốt. Nhưng khi tôi bắt đầu chạy thử nghiệm đơn giản tôi nhận lỗi về tất cả các khác thử
php(20048,0x7fff796f1960) malloc: *** mmap(size=2977160837258543104) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
terminate called throwing an exceptionAbort trap: 6
này bị ném, khi tôi đã cố gắng để thực thi mã này:
<?php
$dsn = 'odbc:Driver={FileMaker ODBC};Server=localhost;Database=CalDAV;';
$pdo = new PDO($dsn, "odbc", "odbc");
$sql = "SELECT * From Users Where id = 2";
$r = $pdo->query($sql);
print_r($r->fetch(PDO::FETCH_ASSOC));
$sql = "SELECT * From Users Where id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(2));
print_r($stmt->fetch(PDO::FETCH_ASSOC));
?>
dòng này gây ra ngoại lệ.
$stmt->execute(array(2));
Có ai có kinh nghiệm nhận pdo_odbc để làm việc trên máy Mac hay không. Tôi thực sự muốn mở rộng tiện ích này. Gợi ý?
không chắc chắn nếu có một brew tương đương nhưng tôi chỉ chạy "sudo port install php5-odbc" và nó được cài đặt dễ dàng. – Kevin
Có vẻ như có một lỗi trong phần mở rộng PDO_ODBC: https://bugs.php.net/bug.php?id=52942 Đoán của tôi là một cuộc gọi xấu 'malloc()' để phân bổ bộ nhớ đã được cấp phát. –
Kevin, tôi khá chắc chắn rằng php5-odbc chỉ là phần mở rộng cũ không PDO ODBC cũ. Tôi đang cố gắng để có được phần mở rộng PDO-ODBC đi trên mac. – toddgeist