finfo_file 메소드를 사용할 때 PHP에서 segfault가 발생하는 것 같습니다.

finfo_file 메소드를 사용할 때 PHP에서 segfault가 발생하는 것 같습니다.

이상한 오류가 발생했습니다. Fileinfo를 사용하여 파일의 MIME 유형을 확인하려고 할 때(http://www.php.net/manual/en/function.finfo-file.php) 확장, PHP(또는 Apache? 아래 참조)가 충돌하는 것 같습니다.

암호:

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE, null);
$info = finfo_file($finfo, "index.php");

apache2를 통해 웹에서 열 때 오류 로그에 segfault가 보고됩니다.

[Wed Oct 23 14:32:25 2013] [notice] child pid 29084 exit signal Segmentation fault (11)

예를 들어 CLI에서 실행하면 php -q test.php출력이 양호합니다.

php -v
PHP 5.5.4-pl0-gentoo (cli) (built: Oct 18 2013 19:11:02)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

/usr/sbin/apache2 -v
Server version: Apache/2.2.25 (Unix)
Server built:   Sep 20 2013 14:16:11

어떤 단서가 있나요?

답변1

해결책을 시도해 보지 않겠습니까?https://bugs.gentoo.org/show_bug.cgi?id=467756비슷한 문제가 있는 것 같습니다.

apache2를 mod_php에서 php-fpm을 사용하여 전환하여 문제를 해결한 방법에 대한 추가 설명:

  1. /etc/portage/package.use를 편집하고 dev-lang/php에 "fpm" 사용 플래그를 추가하세요.

  2. "emerge php"를 통해 php를 다시 병합하세요.

  3. "emerge mod_fastcgi_handler"를 통해 fastcgi 모듈을 설치하십시오.

  4. /etc/conf.d/apache2를 편집하여 "-D FASTCGI_HANDLER"를 추가하고 "-D PHP5"를 제거합니다.

  5. /etc/php/fpm-php5.4/php-fpm.conf를 편집하고 "listen=/var/run/php-fpm.sock"을 통해 소켓을 사용하도록 "listen" 문을 변경합니다.


  6. /etc/apache2/modules.d/20_mod_fastcgi_handler.conf를 편집하고 끝에 AddHandler를 추가합니다. fcgi:/var/run/php-fpm.sock .php .php5 .phtml .phps DirectoryIndex index.php index.phtml

  7. 아파치를 다시 시작하고 php-fpm을 시작하십시오

이 절차를 사용하여 php-fpm으로 전환한 후 Apache 충돌이 즉시 사라지고 샘플 스크립트가 예상대로 작동했습니다. 그러므로 나는 mod_php가 범인이라고 의심합니다.

또는 apr-utils에 USE=nss를 추가해야 할 수도 있습니다.

PS 문제의 프로그램 버전뿐만 아니라 사용 플래그도 표시합니다.

PPS PHP에 apache2 사용 플래그를 추가하는 것을 잊지 마세요(기본적으로 꺼져 있음)

관련 정보