IT News/PHP

PHP CURL 에러시 해결 방법 (PHP Warning: PHP Startup: Unable to load dynamic library - The operating system cannot run %1.\r\n in Unknown on line 0) APMSETUP

skyLove1982 2016. 10. 26. 19:54
반응형

APMSETUP을 이용해서 PHP 를 localhost 로 테스트 할때 사용하는데요. 기존에 윈도우7(windows7) 에서는 PHP CURL 이 정상적으로 동작을 했는데 최근에 윈도우 10 (windows 10) 에서 apmsetup 을 설치해서 사용하는데 이상하게도 CURL 사용을 할려면 에러가 나게 되었습니다. 정확한 에러로그 확인을 위해서 C:\APM_Setup\Server\Apache\logs\error.log 파일을 살펴보았는데 아래와 같은 에러메시지가 나왔습니다.


 PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\APM_Setup\\Server\\PHP5\\ext\\php_curl.dll' - The operating system cannot run %1.\r\n in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\APM_Setup\\Server\\PHP5\\ext\\php_mcrypt.dll' - The specified module could not be found.\r\n in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\APM_Setup\\Server\\PHP5\\ext\\php_mhash.dll' - The specified module could not be found.\r\n in Unknown on line 0


위의 메시지를 보면 PHP 가 실행딜때 다이나믹 라이브러리를 로드할 수 없다는 경고 메시지가 나오는데요. 세부적으로는 운영시스템이 실행할 수 없다는 의미인것 같았습니다. 아무튼 php_curl.dll 을 로드할 수 없다는 의미이고 결국에는 curl 을 사용할 수 없다는 것을 의미합니다. 그러면 어떻게 해야할까요? 구글에서 찾은 여러가지 방법을 적용을 해보았습니다. 그리고 아파치를 재시작하고 에러로그를 확인하면서 계속 해결방법을 찾아보았는데요. 어제 결국에는 CURL 이 실행이 되었습니다. 기억을 되살리어 한번 그 방법을 적어 내려가 보겠습니다.


우선 C:\APM_Setup\php.ini 파일을 수정하였습니다. 내용중에서 php_intl.dll (빨간색 부분) 을 추가하였습니다. 그리고 php_curl.dll 부분이 주석처리(;)가 되어있는지 아닌지 확인보고 주석처리가 되어있다면 주석(;)을 삭제합니다.


; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.


extension=php_intl.dll


extension=php_curl.dll


그리고 extension_dir 경로를 "C:\APM_Setup\Server\PHP5\ext" 으로 설정합니다.


; Directory in which the loadable extensions (modules) reside.
extension_dir = "C:\APM_Setup\Server\PHP5\ext"



위와같이 설정하고 php.ini 파일을 저장합니다. 그리고 나서 아파치를 재시작하고 했는데요 잘 않되었습니다. 잘은 이해가 되지는 않았지만요.. 마지막으로 제어판 -> 시스템 -> 고급 시스템 설정 -> 고급탭에서 환경변수를 클릭하면 아래와 같이 환경변수 창이 하나 뜨게 되는데요.
 하단에 시스템 변수 부분에서 변수 이름이 Path 인 부분을 클릭합니다. 그리고 편집 버튼을 누르세요.

윈도우10 환경변수


그러면 아래의 이미지와 같은 창이 하나 뜨게 되는데요. 새로 만들기를 눌러서  C:\APM_Setup\Server\PHP5\ext 이라고 입력합니다. 처음에는 ext 경로까지 입력을 안해도 될것 같았는데.. 혹시나 하고 입력을 해보았습니다.

윈도우10 환경 변수 편집



위와같이 설정하고 컴퓨터를 재부팅하고 다시 해보시면 정상적으로 실행이 되었던것 같습니다. 저도 여러번의 시행착오를 거치며 한 부분이라서 명확하게 해결방법을 말씀드릴 수는 없지만 조금이나마 도움이 되셨으면 좋겠습니다.


만약에 그래도 되지 않을 경우에는 C:\APM_Setup\Server\PHP5\libssh2.dll 파일을 C:\Windows\System32 와 C:\Windows\SysWOW64 에 복사해 주세요. 이렇게 하게된 이유는 에러 로그에 The operating system cannot run %1 in Unknown on line 0 이란 메시지가 나와서 검색을 해보니 SSH2 가 동작하지 않기 때문이라고 나왔기 때문입니다. libssh2.dll 파일을 복사해서 넣으시고 다시 아파치를 재시작 해보시기 바랍니다.


참고로 필요할지는 모르겠지만.. 윈도우 SSL 인증을 회피하는 방법은 아래와 같습니다.


 // to ignore the SSL certificate in windows


$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);










반응형