2017-11-12 20 views
1

PHP 2.4와 PHP 2.4를 설치 한 후 PHP 7의 확장을 사용하고 싶었습니다. 작은 테스트 스크립트 index.php을 작성했습니다. 주어진 확장 기능의 일부 기능을 호출하십시오.httpd를 통해 PHP 확장을 찾을 수는 없지만 동일한 php.ini를 사용하여 CLI에서 찾을 수 있음

... 
;extension=php_ldap.dll 
extension=php_mbstring.dll 
;extension=php_exif.dll  ; Must be after mbstring as it depends on it 
extension=php_mysqli.dll 
;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client 
... 

같은

<?php 
    var_dump(mb_strlen('p')); 
    var_dump(mysqli_connect_error()); 

php.ini에서 해당 라인을 주석

하고,이 php.ini

; Directory in which the loadable extensions (modules) reside. 
; http://php.net/extension-dir 
; extension_dir = "./" 
; On windows: 
; extension_dir = "ext" 

extension_dir = "ext" 

의 창 - 특정 부분에 따라 extension_dir을 구성 나는 아파치 웹을 다시 시작 서버에 넣고 http://localhost/index.php을 가져 왔습니다.

치명적인 오류 : 나는 오류 메시지를 가지고 catch되지 않은 오류 : \ 프로그램 파일 \ Apache24는 \ htdocs에 ... 확장을 의미

가로드되지 않았습니다 :() C에서 정의되지 않은 함수 mb_strlen에 호출합니다. 내가하지 웹 서버를 통해 만에서 같은 index.php를 시작하면, 반대로

Loaded Configuration File C:\Program Files\php\php.ini 

:

나는 브라우저에 표시되는 phpinfo()과 동일의 php.ini 내가 수정 한 것을 doublechecked 커맨드 라인에서 다른 출력을 얻었습니다 :

C:\Program Files\Apache24\htdocs>"C:\Program Files\php\php.exe" index.php 
int(1) 
NULL 

즉, 확장이 올바르게로드되었음을 의미합니다.

명령 줄 PHP는 사용 php.ini 같은 :

c:\Program Files\Apache24\htdocs>php -i|find "Loaded Configuration File" 
Loaded Configuration File => C:\Program Files\php\php.ini 

어떻게이 같은php.ini 파일이 명령 줄에서 확장을로드하지만 웹 서버를 통해 사용하는 경우를로드하지 않도록 할 수 있습니까?

답변

3

php.ini의 설명과는 달리 extension_dir은 상대 경로가 아닌 전체 경로로 지정해야합니다.

extension_dir = "C:/Progra~1/php/ext" 

extension_dir = "ext" 

에서 php.ini의 라인을 변경하고 다시 시작 웹 서버 문제를 해결했다.

NB :

: 수동 INSTALL.TXT php-7.1.11-Win32-VC14-x64.zip \에 의하면, 경로 함유 공간 좋아하지 않기 때문에 I는 DOS 8.3 경로 대신 사용 "C:/Program Files/php/ext"

다른 위치를 선택할 수도 있지만 경로에 공백이 없어야합니다 (예 : C : \ Program Files \ PHP). 일부 웹 서버가 충돌 할 경우 충돌이 발생합니다.

내가 언급 한 경로에는 공백이 없으므로 잘못 입력했다고 생각하지 않습니다.그럼에도 불구하고 나는 기본 디렉토리 c : \ php에 PHP를 설치했다면 어떻게 작동할지는 모르지만 전체 경로를 정의하는 것이 더 안전한 방법으로 보인다.