Я пытаюсь включить расширение pdo_odbc для PHP на моем Mac с PHP 5.3 Вот что я сделал, чтобы заставить его работать:
Я установил UnixODBC с помощью варить
$ варить установить unixodbc
Скачал исходники для PHP 5.3.8. В терминале я перешел в папку pdo_odbc. Потом сделал следующее.
$ phpize
$ ./configure --with-pdo-odbc=unixODBC
$ сделать
Произошла ошибка.
/Users/todd/Downloads/php-5.3.8/ext/pdo_odbc/pdo_odbc.c:43: ошибка: «ZEND_MOD_END» здесь не объявлена (не в функции)
/Users/todd/Downloads/php-5.3.8/ext/pdo_odbc/pdo_odbc.c: В функции «zm_startup_pdo_odbc»:
/Users/todd/Downloads/php-5.3.8/ext/pdo_odbc/pdo_odbc.c:135: предупреждение: приведение к указателю из целого числа другого размера
На основании некоторых блогов я заменил ZEND_MOD_END
на {NULL,NUll, NULL}
и снова запустил make. На этот раз оно подчинилось.
Затем я запустил «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. Я бы очень хотел, чтобы это расширение работало.Предложения ?