개발 꿀팁/PHP

php7 curl을 로드할 수 없는 문제 해결 및 반성

Jammie 2022. 7. 8. 17:06
반응형

빠른 화재를 진압하기 위해 먼저 해결책을 제시하라:

#在apache 기본 프로필 httpd.conf에 추가
LoadFile "E:\myServer\php\libssh2.dll"

최근 PHP 환경 구축에 대한 혁신적인 시도가 이루어지고 있습니다. 시스템의 각 부분을 최대한 깨끗하게 하기 위한 목적으로 APACH, php, mysql이 독립되어 있습니다. 그 외에는 더 많은 것이 필요하지 않습니다.



PHP 프로필에서는 상대 경로를 사용할 수 있습니다. 그러나 인터넷에서 볼 수 있는 튜토리얼은 모두 절대 경로입니다. 예를 들어 D:\path\php\ext입니다. 지금은 사용하지 않습니다.

#732행php.ini 7.2.3
extension_dir = "..\php\ext"

APACH에서의 구성은 동적으로 도입될 수 있다

Include conf/user.conf
Include conf/codenight/*.conf

변수까지 사용할 수 있습니다

Define ROOT "E:\myServer"
Define SRV_ROOT "${ROOT}/Apache24"

이상에서는 매우 많은 배치 문제를 해결할 수 있으며, PHP 환경 구축 배치 최적화에 대해서는 오늘과 이전 푸시에서 자세히 설명하고 있지만 여기서는 전개하지 않습니다.



사양이 최적화되면 PHP의 모든 모듈을 예정대로 로딩할 수 있어 완벽합니다.



아니야 아니야, php_curl 안 돼, 아파치가 알려줬어

#있다..\Apache24\logs우리가 발견한 유일한 경고는
PHP Warning:  PHP Startup: Unable to load dynamic library 'curl' 
(tried: ..\\php\\ext\\curl (\xef\xbf\xbd\xd2\xb2\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xd6\xb8\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xc4\xa3\xef\xbf\xbd\xe9\xa1\xa3), ..\\php\\ext\\php_curl.dll (\xef\xbf\xbd\xd2\xb2\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xd6\xb8\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xc4\xa3\xef\xbf\xbd\xe9\xa1\xa3)) in Unknown on line 0

그 PHP의 curl 모듈을 사용할 수 없게 되었다

Fatal error: Uncaught Error: Call to undefined function curl_init()

emmmmm?

이 모듈을 꺼내면 안 돼요로드된 문제, 처음에는../php/ext의 상대 경로를 이렇게 쓸 수 없다고 의심했지만, 다른 모듈 mysqli, mbstring은 문제가 없습니다. 제외



바이두에서 한바탕 수색하다.

Q: PHPStartup: Unable to load dynamic library 'curl'



원하는 답이 아니라방식을 바꾸다



Q: php7아니오컬 사용 가능

A1:간단하고 거칠게httpd.conf는 네 개의 문장을 막는다.

LoadFile D:/php/php7.1/php7ts.dll  
LoadFile D:/php/php7.1/libeay32.dll  
LoadFile D:/php/php7.1/ssleay32.dll  
LoadFile D:/php/php7.1/libssh2.dll  
 
#출처https://blog.csdn.net/lichenglin123/article/details/77867969

A2: 사실 하나만 로드하면 돼요

궁극적인 해결책은 php 홈페이지에서 curl을 검색한 다음 아래의 영어 댓글을 보는 것이다..
Move to Windows\system32 folder:
libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll
Move to Apache24\bin folder
libssh2.dll 
자신을 나는 이 서류만 넣어 libssh2.dll에서 해결하다. 마침내 Apache24\bin
 
#출처https://blog.csdn.net/petopig/article/details/72722192

위의 두 가지 방법은 모두 효과가 있습니다. 그러나 첫 번째 방법은 무관한 모듈을 너무 많이 로드하는 것입니다. 사실 후환이 끝이 없습니다. 두 번째 방법은 훨씬 더 낫고 생각하고 시도할 수 있습니다.두 번째 방법은 PHP 디렉토리 아래에 있는 파일 libssh2.dll을 apache 디렉토리 아래에 두는 방법인데, 파일을 이동시키는 것도 최소 변경 원칙에 부합하지 않는다는 점을 개선할 수 있다.



우리는 curl을 로드하기 전에 libssh2.dll을 도입함으로써 세 번째 동적 로딩 방법을 채택하고, 동시에 우리의 구성에 최적화된 구조에 따라 독립적인 php7.conf 파일에 넣기만 해도 HTTP.conf를 수정할 필요가 없다

첫 번째 줄은 우리가 가입한 것이고, 이러한 이점은 PHP가 APACH 마스터 프로필을 방해하지 않는 별도의 파일에 배치된다는 것입니다

#..\myServer\Apache24\conf\codenight\php7.conf
#curl 지원
LoadFile "${PHP_ROOT}/libssh2.dll"
 
 
LoadModule php7_module "${PHP_ROOT}/php7apache2_4.dll"
AddHandler application/x-httpd-php .php
# php.ini 경로 설정
PHPIniDir "${PHP_ROOT}"

결어

PHP를 막 배운 초보자에게 wampServer, phpStudy, Xammp와 같은 통합 환경은 분명 쾌적하지만, 모든 기술적 간편함이 양날의 검이며, 시작의 지름길이 가시밭길로 이어져 따끔따끔한 통증을 유발하고 일부 초보자의 무한팽창을 마비시킬 수 있다는 점은 경계해야 합니다.공부는 착실하게 본질적인 것을 탐구할 필요가 있다.프로그래밍을 배우는 것은 진실을 찾는 과정이다.



요즘 환경을 들볶는 것은 집적환경에 대한 의존에서 벗어나 발견을 할 수 있도록 단순하고 순수한 길을 복원하고 원래의 모습을 보기 위함이다.



때로는 너의 고집이 너를 자라게 할 때도 있다.

원력을 지키고 신병을 손에 쥐다

반응형