Я пытаюсь получить расширение PDO_ODBC для PHP включен на моем Mac, который работает PHP 5.3 Вот что я сделал, чтобы попытаться заставить его работать:Включение расширения PHP PDO_ODBC на Mac OSX
Я установил 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. Я бы очень хотел, чтобы это расширение работало. Предложения?
не уверен, есть ли эквивалент пива, но я просто запускал «sudo port install php5-odbc» и легко устанавливался. – Kevin
Похоже, есть ошибка в расширении PDO_ODBC: https://bugs.php.net/bug.php?id=52942 Мое предположение - плохой вызов 'malloc()' для выделения выделенной памяти. –
Кевин, я уверен, что php5-odbc - это просто старое расширение PDO ODBC. Я пытаюсь получить расширение PDO-ODBC, идущее на Mac. – toddgeist