我試圖讓PDO_ODBC延長我的Mac這是運行PHP 5.3以下啓用PHP是我做的,試圖得到它的工作:啓用PHP PDO_ODBC擴展的Mac OSX
我在brew中安裝了UnixODBC
$ brew install unixodbc
下載了PHP 5.3.8的源代碼。在終端中,我導航到了pdo_odbc文件夾。然後做了以下。
$ phpize $ ./configure --with-pdo-odbc=unixODBC $ make
發生錯誤。
/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
基於一些博客我換成
ZEND_MOD_END
與{NULL,NUll, NULL}
跑了再做。這一次它遵守。然後我跑了「sudo make install」 並且在正確的地方安裝了擴展。我修改了php.ini來啓用它。它顯示在phpInfo()
到目前爲止好。但是,當我開始運行簡單的測試,我得到所有其他錯誤嘗試
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
這被拋出,當我試圖執行此代碼:
<?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));
?>
此行導致異常。
$stmt->execute(array(2));
有沒有人有任何經驗讓pdo_odbc在Mac上工作。我真的很想讓這個擴展工作。建議?
不知道是否有一個brew等價物,但我只是運行「sudo port install php5-odbc」,它很容易安裝。 – Kevin 2012-04-09 22:58:40
看起來像PDO_ODBC擴展中存在一個錯誤:https://bugs.php.net/bug.php?id=52942 我的猜測是一個不好的'malloc()'調用來分配已分配的內存。 – 2012-04-13 13:34:04
Kevin,我很確定php5-odbc只是舊的非PDO ODBC擴展。我正在嘗試在Mac上獲得PDO-ODBC擴展。 – toddgeist 2012-04-15 15:33:35