web-dev-qa-db-ja.com

致命的なエラー:PHPの未定義関数imap_open()の呼び出し

ローカルホスト経由でGmailアカウントにアクセスしようとしています。しかし、私は応答を得ています:

致命的なエラー:未定義の関数imap_open()の呼び出し

誰かが問題を解決するために何をすべきかを指摘できますか?

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = '[email protected]';
$password = 'mypassword';

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

インストール手順は常に同じですが、package-managerとpackage-nameは、使用するディストリビューション、バージョン、および/またはリポジトリによって異なります。一般的に、手順は次のとおりです。

a)最初に、コマンドsuまたはSudoで取得したユーザー特権の昇格が必要です。

b)その後、パッケージマネージャーでabsent PHPモジュールをインストールします.

c)その後、モジュールをロードするにはApache2 HTTPデーモンの再起動が必要です。

d)最後に、php -m | grep imapを実行して、PHPモジュールが利用可能になったかどうかを確認できます。

UbuntuAPTパッケージphp5-imap(またはphp-imap)は、apt-getでインストールできます:

apt-get install php5-imap
service Apache2 restart

Debianでは、APTパッケージphp5-imapをインストールできますaptitude(またはapt-get ):

aptitude install php5-imap
Apache2ctl graceful

CentOSおよびFedoraRPMパッケージphp-imapyumを使用してインストールできます(ヒント: Webtatic repoを使用する場合、パッケージの名前はphp56w-imapまたはphp71w-imapに似ている場合があります)。

yum install php-imap
service httpd restart

systemdシステムでは、 systemd units を使用しているときに、ユニット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スニペットを使用してモジュールをロードすることをお勧めしますが、/etc/php5/conf.d/(パスも異なる場合があります)でINIファイルをスキャンしています:

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

Ubuntuは、Webサーバーを再起動する前に実行されるPHPモジュールを管理する独自のコマンドも備えています。

php5enmod imap
php5dismod imap

IMAPモジュールがサーバーにロードされると、 PHP IMAP Functions が利用可能になります。モジュールを利用する前に、モジュールロードされているかどうかを確認するのがベストプラクティスかもしれません。

57
Martin Zeitler

imapをインストールするためのUbuntuで

Sudo apt-get install php-imap

buntu 14.04以降の使用

Sudo apt-get install php5-imap

およびデフォルトではimapはphpで有効になっていないため、このコマンドを使用してimapエクステンションを有効にします

須藤php5enmod imap

その後Apacheを再起動します

SudoサービスのApache2の再起動

33
pramod kadam

linuxを使用している場合は、/etc/php/php.ini(または、/ etc/php5/cli/conf.dに新しい拡張インポートファイルを作成する必要があります)ファイルを使用して、imap共有オブジェクトファイルを追加してから、Apacheサーバーを再起動します。コメント解除

;extension=imap.so

次のようになります。

extension=imap.so

次に、Apacheを再起動します

# /etc/rc.d/httpd restart
7
Shiva Nandan

Homebrewを搭載した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"

したがって、再インストール it:

$ brew reinstall php72 --with-imap

しばらく時間がかかります:-)(8分17秒で作成)

4

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

apache用に修正する必要があります。 CLIの場合は、/ etc/php5/cli/conf.dで同じことを行います

4
M5M400

echo get_cfg_var('cfg_file_path');

このphpのインスタンスでどのphp.iniが使用されているかを確認できます。

4
abhilashv

pHP 5.3がインストールされているCentOSの場合。

Sudo yum install php53-imap

apacheを再起動します

Sudo/sbin/service httpd restartまたはSudo service Apache2 restart

2
Robert

NginxとPHP-FPM 7を備えたUbuntuはこれを使用します。

Sudo apt-get install php-imap

サービスphp7.0-fpm restart service ngnix restart

モジュールがインストールされていることを確認してくださいphp -m | grep imap

モジュールimapの構成は、cli php.iniとfpm php.iniの両方で自動的に有効になります

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

ローカルインストールがWindowsでXAMPPを実行している場合、それで十分です。ファイル "\ xampp\php\php.ini"を開いて、 "; extension = php_imap.dll"の行の先頭のセミコロンを削除することにより、PHPエクステンションをアクティブにできます。そのはず:

;extension=php_imap.dll

extension=php_imap.dll
0

IMAPをPHP 7.0.32でUbuntu 16.04にインストールする場合。指定されたリンクに移動し、地域に応じてリンクを選択します。私の場合は、Asiaセクションからリンクを選択します。ファイルをクリックしてIMAPをインストールします。次にApacheを再起動します。

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

iMAPがインストールされているかどうかを確認するには、phpinfoファイルを確認します。インストールが成功した場合は、IMAP c-Clientバージョン2007fが表示されます。

0
Amal