2014-12-15 7 views
4

MacPorts의 PHP (mod_php53.so)를 사용하여 Mac OS X Yosemite에서 Apache를 실행하려고합니다. MacPorts의 Apache는 사용하지 않지만 MacPorts의 PHP는 Yosemite의 Apache를 사용합니다. 이것은 과거에 OSX Mavericks와 Mountain Lion에서 잘 작동했습니다.Mac OSX는 어떤 dylib를로드 할 것인지를 어떻게 결정합니까?

는 아파치 : /private/etc/apache2/httpd.conf의 라인 228에 구문 오류 :로드 할 수 없습니다/옵션은/usr/sbin에/apachectl을 -t 요세미티를 실행하는 경우

나는이 오류 /local/apache2/modules/mod_php53.so 서버에 : dlopen (/opt/local/apache2/modules/mod_php53.so, 10) : 라이브러리가로드되지 않았습니다. /opt/local/lib/libaprutil-1.0.dylib\n Referenced 에서 : /opt/local/apache2/modules/mod_php53.so\n 이유 : 호환되지 않는 라이브러리 버전 : mod_php53.so 버전 6.0.0 이상이 필요하지만-1.0.dylib libaprutil 버전 4.0.0

을 제공합니다 실제로/opt/lo cal/lib/libaprutil-1.0.dylib 현재 버전은 6.4.0이므로 작동해야합니다.

otool -L /opt/local/lib/libaprutil-1.0.dylib 
/opt/local/lib/libaprutil-1.0.dylib: 
/opt/local/lib/libaprutil-1.0.dylib (compatibility version 6.0.0, current version 6.4.0) 

나는 아파치에있는 시스템의 libaprutil-1.0.dylib를로드 추측은/usr/lib 디렉토리 :

otool -L /usr/lib/libaprutil-1.0.dylib 
/usr/lib/libaprutil-1.0.dylib: 
/usr/lib/libaprutil-1.0.dylib (compatibility version 4.0.0, current version 4.0.0) 

오류 메시지가 명확 MacPorts를 'libaprutil로드되지 않았 음을 주장하기 때문 혼란 버전 비호 환성 때문에 시스템의 libaprutil을 사용하려고 시도하고 Apache가 MacPorts의 libaprutil을 강제로로드하도록하는 방법을 모르는 것 같습니다.

나는 이미 DYLD_LIBRARY_PATH 환경 변수를 설정하려고 시도했지만 도움이되지 않았습니다.

아이디어가 있으십니까?

답변

2

이것은 환경에 DYLD_LIBRARY_PATH=/usr/lib이 포함 된 경우 발생합니다. 설정을 해제하면 제대로 작동합니다.

라이브러리는 OS X에서 절대 경로를 사용하여 참조됩니다. 절대 경로를 사용하여 /opt/local/apache2/modules/mod_php53.so 참조 /opt/local/lib/libaprutil-1.0.dylib을 올바르게 인식했습니다. 그러나 DYLD_LIBRARY_PATH이 있으면 로더는 디렉토리 구성 요소를 무시하고 DYLD_LIBRARY_PATH에 지정된 디렉토리에서 파일 이름을 검색합니다.

표시되는 오류 메시지는 다음과 같습니다 : /opt/local/lib/libaprutil-1.0.dylib load 명령 (env 변수로 인해 전환 된)을 처리하려고 시도한 코드에서 오류가 발생했음을 알려주려고합니다.

MacPorts가 MacPorts Apache에 대해 PHP를 빌드하기 때문에 PHP 모듈이 반드시 시스템 Apache와 바이너리 호환되는 것은 아닙니다. 그것은 당신을 위해 일할 수도 있지만, 그것은 단지 우연의 일치입니다.

+1

감사합니다. DYLD_LIBRARY_PATH가 내 환경에 설정되어 있지 않습니다. 어쨌든, 나는 이미 DYLD_LIBRARY_PATH의 설정을 해제했다. 나는 또한/opt/local/lib/앞에 DYLD_LIBRARY_PATH를 설정하여 시도했다. Macports의 PHP 모듈은 Leopard, Snow Leopard, Lion, Mountain Lion 및 Mavericks에서 Macosx의 아파치와 함께 작업 해 왔습니다. 나는이 새로운 버전이 또한 작동해야한다고 생각한다. 문제는 내 설정에서 "/opt/local/lib/libaprutil-1.0.dylib"이 사용되는지 확인하는 것입니다. – landabaso

+0

다시 점검했고/usr/sbin/httpd는 이미 "/usr/lib/libaprutil-1.0.dylib"를로드합니다. 그래서 다른 경로에서 같은 라이브러리를 다시로드 할 수 없다고 추측하고 mod_php53은 이미 메모리에로드 된 라이브러리를 사용해야합니다. httpd가 다른 버전의 라이브러리를 사용하도록 할 수 있습니까? – landabaso

+1

그래, 이미'/ usr/lib'에서'libaprutil-1.0.dylib'을 읽어 들인다면 문제를 설명 할 수 있습니다.환경에'DYLD_LIBRARY_PATH'가 없을 수도 있지만, 아파치는 시작할 때 환경에 그것을 추가 할 것입니다 (저는 생각하지 않습니다.). 아파치에 대해'DYLD_LIBRARY_PATH =/opt/local/lib'를 설정하여 MacPorts의 libaprutil을 강제로 시도 할 수는 있지만 호환되지 않을 수 있습니다. 이 시점에서, 당신은 아마도'/ usr/lib'에 libaprutil에 대한 mod_php를 만들거나 MacPorts Apache를 사용하는 것이 가장 좋습니다. – neverpanic