2011-02-24 2 views
12

PHP 5.3.5 & IIS 6을 사용하는 Windows Server 2003에서 실행되는 PHP 스크립트에서 finfo_open을 호출하는 데 문제가 있습니다. 전화가 항상 치명적인 오류를 반환합니다 : 정의되지 않은 호출 function finfo_open() in ...Windows PHP 5.3.5에서 php_fileinfo.dll 및 finfo_open 사용

약간의 정보를 통해 필자는 Windows PHP 설치시 기본적으로 fileinfo 기능이 포함되어 있지 않다는 것을 알고 있습니다. 여기 코멘트 # 3의 지침 : http://www.php.net/manual/en/fileinfo.installation.php은 도움이되지 않았습니다. 그리고 그것은 제가 찾을 수있는 가장 공식적인 설명입니다. 웹에 mime_magic dll이 필요하다는 정보가 많이 있지만 5.3 버전에서는 더 이상 필요하지 않습니다. 게다가 나는 http://pecl.php.net/package/Fileinfo에서 "PHP 5.3.0부터이 확장 기능은 기본적으로 활성화되어 있습니다"라고 읽었습니다. 무슨 일이야?

이 문제는 테스트 서버에 있습니다. 내 로컬 컴퓨터에서 xampp 및 PHP 5.3.1 있고 호출이 잘 작동하므로 php_fileinfo.dll을 로컬에서 php \ ext로 복사하는 작업을 시도했지만 이것도 별 차이가 없었습니다 (그 버전이 다른,하지만 그 5.3 중요한 비트입니다 읽었습니다).

이것에 대한 조언은 많은 도움이 될 것입니다.

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $mime = finfo_file($finfo, $filepath); 

답변

18

거의 완료되었으므로 약간의 구성 만 부족합니다.

DLL 파일이 예를 들어 PHP 5.3.6과 bundeled 것을

Windows users must include the bundled php_fileinfo.dll DLL file in php.ini to enable this extension.

, 여기에 파일을 찾을 수 있습니다 : PHP For Windows - Binaries and sources Releases

fileinfo usage and installation instructions 참조하십시오. 이미 PHP 설치의 ext 하위 디렉토리에 있어야합니다. 해당 웹 사이트 (PHP 버전 선택)에서 다시 다운로드하지 않고 확장 디렉토리에 배치하십시오.

당신은 그것을 활성화하기 위해 다음 줄 당신의 php.ini을 추가해야합니다

Windows에서 PHP 확장을 활성화 할 수있는 표준 절차의
extension=php_fileinfo.dll 

. PHP 확장 기능을 활성화하는 방법에 대한 자세한 내용은 Installation of extensions on Windows을 참조하십시오. php.ini 파일을 찾는 데 문제가 있으면 PHP installation instructions - Installation on Windows systems을 참조하십시오.

+0

입력 해 주셔서 감사합니다.하지만 이것은 정확하게 제가 이미 시도한 것입니다. 'fileinfo 사용 및 설치 지침'을 제공 한 링크는 첫 번째 게시물에서 확인한 링크와 동일합니다. 필자는 php.ini에서 확장을 활성화하고 IIS를 다시 시작한 다음 전체 서버를 변경없이 다시 시작했습니다. 지금은 업로드시 파일의 MIME 유형을 확인하고이를 데이터베이스에 저장 한 다음 다운로드 할 때 파일 스트림을 만들 때이 문제를 해결하기 위해 노력하고 있습니다. – tomfumb

+1

@ user519575 - 귀하의 PHP 버전은 무엇입니까? 어제 windowsinfo에 fileinfo 모듈을 설치해야했고 이전에 누락 된 방식으로 작동했습니다. PHP 5.3.6을 사용하고 있습니다. 어떤 서버 인터페이스를 사용하고 있습니까? 올바른 PHP.ini 파일을 편집하고 있습니까? PHP 스크립트에서로드 된 모듈을 나열 할 수 있으며 해당 목록의 fileinfo 부분입니까? – hakre

+0

결국이 문제가 해결 되었습니까? finfo는 phpinfo()에 있지만 함수는 모두 undefined로 반환됩니다. IIS7 – zanderwar

4

extension=php_fileinfo.dll 

이 줄은 내 php.ini에 주석되었다 그래서 그것을 주석 처리 한 후 내 XAMPP 서버를 다시 시작됩니다.