Подтвердить что ты не робот

Неустранимая ошибка: вызов функции undefined imap_open() в PHP

Я пытаюсь получить доступ к своей учетной записи 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());
4b9b3361

Ответ 1

Достаточно просто, расширение IMAP не активируется в вашей установке PHP. Он не включен по умолчанию. Если ваша локальная установка запускает XAMPP в Windows, вы должны включить ее, как описано в часто задаваемых вопросах XAMPP:

Где поддержка IMAP для PHP?

По умолчанию поддержка IMAP для PHP отключается в XAMPP, потому что были некоторые загадочные ошибки инициализации с некоторыми домами таких как Windows 98. Кто работает с NT-системами, может открыть файл "\xampp\php\php.ini", чтобы активировать expension php, удалив начало точки с запятой на линии ";extension=php_imap.dll". Должно быть: extension=php_imap.dll

Теперь перезапустите Apache и IMAP. Вы можете использовать те же шаги для каждого расширения, которое не включено по умолчанию конфигурации.

Ответ 2

Процедура установки всегда одинакова, но менеджер пакетов и имя пакета различаются, в зависимости от того, какой дистрибутив, версия и/или репозиторий используются. В общем, шаги:

a) сначала требуется повышение привилегий пользователя, либо полученное с помощью команд su или sudo.

b), то можно установить отсутствующий PHP-модуль с менеджером пакетов.

c), после этого перезагрузите демон apache2 HTTP для загрузки модуля.

d), можно запустить php -m | grep imap, чтобы узнать, доступен ли теперь модуль PHP.

В Ubuntu пакет APT 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 и Fedora пакет RPM php-imap может быть установлен с помощью yum (подсказка: имя пакета может быть чем-то похожим php56w-imap или php71w-imap при использовании Webtatic repo):

yum install php-imap
service httpd restart

В системах systemd, используя systemd units, команда перезапуска unit 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 также содержит проприетарные команды для управления модулями PHP, которые должны быть выполнены до перезапуска веб-сервера:

php5enmod imap
php5dismod imap

Как только модуль IMAP загружается на сервер, PHP IMAP Functions должен стать доступным; лучше всего проверить, действительно ли модуль загружен, прежде чем пытаться его использовать.

Ответ 3

В 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

Ответ 4

если вы используете linux, отредактируйте /etc/php/php.ini (или вам нужно будет создать файл импорта нового расширения в файле /etc/php 5/cli/conf.d), чтобы добавить файл общего файла imap, а затем, перезапустите сервер Apache. Раскоментируйте

;extension=imap.so

чтобы он выглядел следующим образом:

extension=imap.so

Затем перезапустите apache с помощью

# /etc/rc.d/httpd restart

Ответ 5

С

echo get_cfg_var('cfg_file_path');

вы можете узнать, какой php.ini был использован этим экземпляром php.

Ответ 6

Во время миграции с 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

Ответ 7

В Mac OS X с Homebrew, как очевидно, 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 секунд)

Ответ 8

если это Centos с установленным php 5.3.

sudo yum install php53-imap

и перезапустите apache

sudo /sbin/service httpd restart

или

sudo service apache2 restart

Ответ 9

Ubuntu с Nginx и PHP-FPM 7 использует это:

sudo apt-get install php-imap

перезагрузка службы php7.0-fpm перезапуск службы ngnix

проверить, что модуль установлен 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

Ответ 10

Если ваша локальная установка работает под управлением XAMPP в Windows, этого достаточно: вы можете открыть файл "\ xampp\php\php.ini", чтобы активировать расширение php, удалив начальную точку с запятой в строке "; extension = php_imap.dll". Так должно быть:

;extension=php_imap.dll

в

extension=php_imap.dll

Ответ 11

Установить IMAP на PHP 7.0.32 на Ubuntu 16.04. Перейдите по указанной ссылке и в зависимости от вашего региона выберите ссылку. В моем случае я выбираю ссылку в разделе Азия. Затем файл будет загружен. просто нажмите на файл, чтобы установить IMAP. Затем перезапустите apache

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

чтобы проверить, установлен ли IMAP, проверьте phpinfo file.incase успешной установки IMAP c-Client Version 2007f будет показан.

Ответ 12

Для Xampp 7.3.9

PHP.ini строка 913:

;extension=imap

Вы должны удалить точку с запятой.