programing

치명적 오류: PHP의 정의되지 않은 함수 imap_open()을 호출합니다.

powerit 2023. 8. 1. 20:51
반응형

치명적 오류: PHP의 정의되지 않은 함수 imap_open()을 호출합니다.

저는 제 로컬 호스트를 통해 제 지메일 계정에 접속하려고 합니다.하지만, 저는 다음과 같은 답변을 받고 있습니다.

치명적 오류: 정의되지 않은 함수 imap_open()을 호출합니다.

내 코드는 다음과 같습니다.

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'myid@gmail.com';
$password = 'mypassword';

/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' .imap_last_error());

IMAP 확장은 PHP 설치에서 활성화되지 않습니다.기본적으로 활성화되지 않습니다.로컬 설치에서 Windows에서 XAMPP를 실행하는 경우 XAMPP FAQ:

PHP에 대한 IMAP 지원은 어디에 있습니까?

기본적으로 PHP에 대한 IMAP 지원은 XAMPP에서 비활성화됩니다. 이는 Windows 98과 같은 일부 홈 버전에서 몇 가지 알 수 없는 초기화 오류가 발생했기 때문입니다.시스템으로 을 열 수 ."\xampp\php\php.ini" php php 니다활합확성화제거장을여하을라론인에서세행의 시작 합니다.";extension=php_imap.dll"같아야 합니다.extension=php_imap.dll

이제 Apache를 다시 시작하면 IMAP가 작동합니다.기본 구성에서 사용하지 않는 모든 확장에 대해 동일한 단계를 사용할 수 있습니다.

설치 절차는 항상 동일하지만 사용하는 배포, 버전 및/또는 리포지토리에 따라 패키지 관리자 및 패키지 이름이 달라집니다.일반적으로 단계는 다음과 같습니다.

처음에는 사용자 권한 상승이 필요합니다. 명령을 사용하여 얻은 권한 상승이 필요합니다.su또는sudo.

그런 다음 패키지 관리자와 함께 없는 PHP 모듈을 설치할 수 있습니다.

그런 다음 다시 시작합니다.apache2모듈을 로드하려면 HTTP 데몬이 필요합니다.

마침내, 달릴 수 있습니다.php -m | grep imapPHP 모듈을 사용할 수 있는지 확인합니다.

Ubuntu에서APT 꾸미php5-imap(또는)php-imap와 함께 할 수 .apt-get:

apt-get install php5-imap
service apache2 restart

데비안에서,APT 꾸미php5-imap할 수 .aptitude(또는)apt-get):

aptitude install php5-imap
apache2ctl graceful

CentOSFedora에서RPM 꾸미php-imap 함께 할 수 .yum: 수 .)php56w-imap또는php71w-imapWebtatic repo를 사용하는 경우):

yum install php-imap
service httpd restart

systemd시스템, systemd 장치를 사용하는 동안 장치를 다시 시작하는 명령httpd.service다음과 같습니다.

systemctl restart httpd.service

위에서 언급한 솔루션에 문제가 있습니다. 모듈이 이미 참조된 경우:

/etc/php5/apache2/php.ini

다음과 같은 문제가 발생할 수:

PHP Warning:  Module 'imap' already loaded in Unknown on line 0

이는 기본값에서 참조되기 때문에 발생합니다.php.ini파일(최소 Ubuntu 12.04) 및 PHP 모듈은 한 번만 참조해야 합니다.사용.INI하는 한편, " 모을로기위스제다안니됩이펫니듈한드하▁snipp▁directory▁is▁the"를 제안합니다. 반면에 디렉토리는/etc/php5/conf.d/(다를 ) 중입니다. (으)로 검색 INI삭제된 파일:

/etc/php5/conf.d/imap.ini

Ubuntu는 웹 서버를 다시 시작하기 전에 실행되는 PHP 모듈을 관리하기 위한 독점 명령도 제공합니다.

php5enmod imap
php5dismod imap

원스 더IMAP모듈이 서버에 로드되면 PHP IMAP 기능을 사용할 수 있게 됩니다. 모듈을 사용하기 전에 모듈이 로드되었는지 확인하는 것이 가장 좋은 방법일 수 있습니다.

Ubuntu에서 imap 사용 설치

sudo apt-get install php-imap

Ubuntu 14.04 이상 사용

sudo apt-get install php5-imap

그리고 imap은 기본적으로 PHP에 의해 활성화되지 않으므로 이 명령을 사용하여 imap 확장을 활성화합니다.

sudo php5enmod imap

그런 다음 Apache를 다시 시작합니다.

sudo service apache2 restart

Linux를합니다./etc/php/php.ini(또는 /etc/sys5/cli/conf.d) 파일에 새 확장명 가져오기 파일을 작성하여 imap 공유 개체 파일을 추가한 다음 Apache 서버를 다시 시작합니다. 달기

;extension=imap.so

다음과 같이 됩니다.

extension=imap.so

그런 다음 Apache를 다시 시작합니다.

# /etc/rc.d/httpd restart

와 함께

echo get_cfg_var('cfg_file_path');

당신은 어떤 php.ini가 이 php 인스턴스에 의해 사용되었는지 알 수 있습니다.

Ubuntu 12.04에서 14.04로 마이그레이션하는 동안 저도 이 문제에 걸려 Ubuntu 14.04 LTS에서 IMAP 확장이 기본적으로 더 이상 로드되지 않는 것처럼 보인다는 점을 공유하고 싶었습니다.

확장이 설치되어 있는지 확인합니다.

dpkg -l | grep php5-imap

다음과 같은 응답을 제공해야 합니다.

ii  php5-imap       5.4.6-0ubuntu5   amd64        IMAP module for php5

설치하지 않은 경우 설치합니다.

실제로 확장을 활성화하려면

cd /etc/php5/apache2/conf.d
ln -s ../../mods-available/imap.ini 20-imap.ini
service apache2 restart

아파치를 위해 그것을 고쳐야 합니다.CLI의 경우 /etc/php5/cli/conf.d에서 동일하게 수행합니다.

분명히 홈브루가 있는 Mac OS X에서는 제공된 오류로 인해 PHP가 이미 설치되어 있습니다.

: 최신 버전: 최신 버전brew instal php --with-imap더 이상 작동하지 않을 것입니다!!!

$ brew install php72 --with-imap
Warning: homebrew/php/php72 7.2.xxx is already installed

또한 모듈만 설치하면 다음 작업이 수행되지 않습니다.

$ brew install php72-imap
Error: No available formula with the name "php72-imap"

따라서 다음을 다시 설치해야 합니다.

$ brew reinstall php72 --with-imap

시간이 좀 걸릴 것 같습니다 :-) (8분 17초 만에 제작)

저도 같은 문제가 있었습니다.php.ini 파일에서 세미콜론을 변경한 후 문제를 해결했습니다.어떻게 해결할 수 있는지 볼까요?

먼저 php.ini 파일을 엽니다.xampp/smap/smap.ini

확장자 검색 = 검색

확장자 앞에 세미콜론을 제거하고 이 파일을 저장합니다.

제거 전 ;extension=imap

제거 후 extension=imap

마지막으로 XAMPP 제어판을 열고 Apache를 다시 시작합니다.

만약 php 5.3이 설치된 센토스라면.

sudo yum install php53-imap

Apache를 다시 시작합니다.

sudo /sbin/service httpd restart

또는

sudo service apache2 restart

Nginx 및 PHP-FPM 7을 사용하는 Ubuntu는 다음을 사용합니다.

sudo apt-get install php-get.

서비스 php7.0-fpm 다시 시작 서비스 ngnix 다시 시작

모듈이 설치되었는지 확인합니다. php -m | grep imap

모듈 imap에 대한 구성은 clip php.ini 및 atpm php.ini 모두에서 자동으로 활성화됩니다.

nano /etc/sys/7.0/cli/conf.d/20-sys.ini nano /etc/sys/7.0/fpm/conf.d/20-sys.ini

로컬 설치에서 Windows에서 XAMPP를 실행 중인 경우 충분합니다. 파일 "\xampp\session\session.ini"를 열어 ";session=session_session.dll" 행의 시작 세미콜론을 제거하여 php 확장자를 활성화할 수 있습니다.다음과 같아야 합니다.

;extension=php_imap.dll

로.

extension=php_imap.dll

Ubuntu 16.04의 PHP 7.0.32에 IMAP을 설치하려면 다음과 같이 하십시오.지정된 링크로 이동하여 해당 지역에 따라 링크를 선택합니다.저의 경우 아시아 섹션에서 링크를 선택합니다.그러면 파일이 다운로드됩니다.IMAP을 설치하려면 파일을 클릭하십시오.그런 다음 Apache를 다시 시작합니다.

https://packages.ubuntu.com/xenial/all/php-imap/download .

IMAP이 설치되어 있는지 확인하려면 phpinfo file을 확인합니다. 설치가 성공한 경우 IMAP c-Client Version 2007f가 표시됩니다.

Xampp 7.3.9의 경우

PHP.ini913호선:

;extension=imap

세미콜론을 제거해야 합니다.

언급URL : https://stackoverflow.com/questions/9654453/fatal-error-call-to-undefined-function-imap-open-in-php

반응형