2012-01-11 2 views
2

PHP와 WAMP로 MongoDB를 설정하려고합니다. 이전에 WAMP 64 비트가 설치되어 있었지만 PHP 드라이버가 작동하지 않는 것을 알았습니다. 따라서 제거하고 32 비트를 설치했습니다. 여기에서 PHP 드라이버를 다운로드했습니다 : http://downloads.mongodb.org/mongo-latest-php5.3vc9ts.zip, dll을 ext에 넣고 php.ini에 확장 기능을 추가했습니다.MongoDB/PHP on WAMP - phpinfo vs php -i

: 나는 WAMP,하지만 내은 phpinfo() 몽고가 목록에 보여주고, 내가 같은 간단한 뭔가하려고 할 때

$m = new Mongo(); // connect 

나는이 오류가 발생하지 않습니다 시작할 때

나는 오류를 얻을하지 않습니다 내가 명령 줄에서 PHP를 -i 작업을 수행 할 때

Build Date Aug 23 2011 11:47:20 
Compiler MSVC9 (Visual C++ 2008) 
Architecture x86 
PHP API  20090626 
PHP Extension 20090626 
Zend Extension 220090626 
Zend Extension Build API220090626,TS,VC9 
PHP Extension Build  API20090626,TS,VC9 

, 그것은 나에게 보여줍니다

(!) Fatal error: Class 'Mongo' not found in C:\development\uswom\btf\test\mongo.php on line 3 

내 phpinfo를이 정보를 보여줍니다 그 몽고가로드 :

mongo 

MongoDB Support => enabled 
Version => 1.2.7- 

Directive => Local Value => Master Value 
mongo.allow_empty_keys => 0 => 0 
mongo.allow_persistent => 1 => 1 
mongo.auto_reconnect => 1 => 1 
mongo.chunk_size => 262144 => 262144 
mongo.cmd => $ => $ 
mongo.default_host => localhost => localhost 
mongo.default_port => 27017 => 27017 
mongo.long_as_object => 0 => 0 
mongo.native_long => 0 => 0 
mongo.no_id => 0 => 0 
mongo.utf8 => 1 => 1 

WAMP 내가 설치 한 유일한 PHP, 그리고 내 CLI의 PHP 내 WAMP의은 phpinfo와 일치하는 것을 확인하기 위해, 나는 세부 사항을 확인하고는 일치 :

을 C : \ Program 파일 (x 86) \ WAMP \ 빈 \ PHP는 \ php5.3.8 \ php.exe가

"PHP는"내가 그 명령 줄 설치 내 WAMP에서 PHP를 실행 보여줍니다 마지막으로
Build Date => Aug 23 2011 11:47:20 
Compiler => MSVC9 (Visual C++ 2008) 
Architecture => x86 
PHP API => 20090626 
PHP Extension => 20090626 
Zend Extension => 220090626 
Zend Extension Build => API220090626,TS,VC9 
PHP Extension Build => API20090626,TS,VC9 

,

1) CLI "php -i"가 Mongo가로드되었지만 phpinfo()가 표시되지 않는 이유는 무엇입니까?

2) 내 "새로운 Mongo()"호출이 phpinfo()가 Mongo가로드된다는 것을 보여주지 않는 동일한 이유로 실패하고 있다고 생각합니다. 그러나 어디에서 디버깅을 시작할 것인지 모르겠습니다. 몽고 로딩 문제. 나는 wamp/logs/apache_error.log를 점검하고 시작시 오류를 표시하지 않습니다.

미리 감사드립니다.

+0

내 대답은 mongo에 대한 약 64 비트 경고를 참조하십시오. http://stackoverflow.com/questions/8891551/troubleshooting-mongo-not-found-and-php-mongo-dll-is-not-a-win32-application – Quan

답변

4

귀하의 질문에 명확하지 않습니다 : phpinfo() 페이지에서 mongo 확장자를 볼 수 있습니까?

CLI가 아파치 (phpinfo())와 동일한 php.ini을 사용하지 않는 경우가 종종 있습니다.

보통 으로 편집하려면 php.ini을 찾으십시오. 그것이 php.ini와 같은 폴더에있을 가능성이 있습니다. 때로는 심지어 c:\Windows에 있기 때문에 조심스럽게 살펴보십시오.

phpinfo() 페이지에서 "구문 분석 된 php ini 파일"을 사용하면 편집 할 수있는 올바른 파일로 바로 이동할 수 있습니다.

또한 WAMP가 인스턴스 당 많은 PHP 엔진을 처리 할 수 ​​있기 때문에 하나의 PHP 버전 만 설치되어 있는지 확인하십시오.

희망이 도움이됩니다.

갱신 :와, 상기시켜, 내가 WAMP과 몽고의 PHP 확장에 비슷한 문제를 가지고 각 구성 변경

+0

아니요, mongo가 phpinfo에 표시되지 않습니다.) 페이지. 또한 의도적으로 C : \ Program Files (x86) \ wamp \ bin \ php \ php5.3.8 \ php.ini에서 mongo dll의 철자를 잘못 입력하면 WAMP가 시작시 팝업 오류를 표시하므로 WAMP phpinfo()는 내가 수정 한 것과 동일한 php.ini를 사용하고 있습니다. – JOV

+0

그런 다음 phpinfo()에서 "parsed php ini files"을 찾아 내고 _this_ 파일에서 mongo 확장을 활성화하십시오. –

+0

빙고, 그게 다야. phpinfo()는 WAMP apache bin 폴더에서 php.ini를 구문 분석하고있는 것으로 나타났습니다. 그 php.ini를 업데이트했는데 이제는 모두 훌륭합니다. 감사합니다 저스틴! – JOV

2

에서 아파치 서비스를 다시 시작합니다.

아파치 오류 로그에 mongo .dll이/ext이지만, 질식하는 것으로 나타났습니다. 몇 가지 문제 해결 후 나는 WAMP의 64 비트 버전을 가지고 있지만 몽고 php .dll은 Github에서만 32 비트로 배포된다는 것을 깨달았습니다.

그래서 64 비트 대신 32 비트 배포판을 사용하여 WAMP를 다시 설치했습니다. (나는 mongo 확장을 64 비트 .dll로 만들 수도 있습니다).

다음은 mongo php의 스레드 안전 버전을 설치하고 phpInfo 요약에로드 했으므로 이제는 해당 기능을 액세스 할 수 있습니다.