내가 일하러하려고했던 것입니다 :활성화 PHP의 pdo_odbc 확장 맥 OSX
양조와 함께 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
나는
{NULL,NUll, NULL}
로ZEND_MOD_END
를 교체하고 다시 만들 달렸다. 이번에는 그것을 준수했습니다.그런 다음 "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에서 사용할 수있는 경험이 있습니까? 이 확장 기능을 사용하고 싶습니다. 제안?
확실하지 않다. – Kevin
PDO_ODBC 확장에 버그가있는 것 같습니다 : https://bugs.php.net/bug.php?id=52942 내 생각에 이미 할당 된 메모리를 할당하는 잘못된'malloc()'호출입니다. –
Kevin, php5-odbc가 PDO가 아닌 오래된 ODBC 확장 일뿐입니다. Mac에서 PDO-ODBC 확장을 사용하려고합니다. – toddgeist