call to undefined function imap open

sbssoft

Guest

Я хотел создовать почтовый яшик с помошю функции imap, но не получаеться показивают вот такую ошибку

Fatal error: Call to undefined function: imap_open() in /var/www/html/new/imap.php on line 2
Или мой сервер не поддерживает ИМАП
Вот текст скрипта

Новичок

> Fatal error: Call to undefined function: imap_open() in /var/www/html/new/imap.php on line 2
Если тебе не понятно сообщение об ошибке — воспользуйся хотя бы translate.ru, чтобы перевести его и осознать. Затем читай ман по [m]IMAP[/m]

> Или мой сервер не поддерживает ИМАП
[m]phpinfo[/m](INFO_MODULES)

PS: и не надо лезть к продвинутым с такими вопросами.

sbssoft

Guest
Новичок

> Если начинающие не смогли ответить к этому вопросу нормално, куда надо
Инструкция по устранению неисправностей
1. Внимательно ознакомиться с текстом сообщения об ошибке, если такового не наблюдается, но программа не работает должным образом, читать PHP FAQ: Ничего не работает! Что делать.
2. Если причина ошибки — в какой-то встроенной функции — бегом читать мануал по этой функции на php.net/имя_функции, а так же в случае необходимости прочесть инструкцию по установке требуемого модуля. Так же не лишне будет воспользоваться поиском в форуме или гугле.
3. Если ничего не помогло — тщательно сформулировать проблему, подумать над заголовком темы, после чего постить её в этот форум.

Если модераторы сочтут нужным — они сами перекинут тему к продвинутым.

50 Sumit [2012-03-11 14:16:00]

Я пытаюсь получить доступ к моей учетной записи gmail через мой localhost. Тем не менее, я получаю ответ:

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

Может ли кто-нибудь указать, что я должен сделать, чтобы решить проблему?

11 ответов

76 Решение Lekensteyn [2012-03-11 14:28:00]

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

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

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

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

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

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

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

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

В Ubuntu пакет APT php5-imap (или php-imap ) может быть установлен с помощью apt-get :

В Debian можно установить APT пакет php5-imap aptitude (или apt-get ):

В CentOS и Fedora пакет RPM php-imap может быть установлен с помощью yum (подсказка: имя пакета может быть чем-то похожим php56w-imap или php71w-imap при использовании Webtatic repo):

В системах systemd , используя systemd units, команда перезапуска unit httpd.service :

Решение, указанное выше, имеет проблему, что, когда модуль уже упоминался в:

Это может вызвать:

Это происходит, потому что на него ссылаются в файле php.ini по умолчанию (по крайней мере, на Ubuntu 12.04), и PHP-модуль должен, по крайней мере, ссылаться один раз. Рекомендуется использовать INI фрагменты для загрузки модулей, в то время как каталог /etc/php5/conf.d/ (этот путь также может меняться) сканируется для файлов INI :

Ubuntu также содержит проприетарные команды для управления модулями PHP, которые должны быть выполнены до перезапуска веб-сервера:

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

в 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/php 5/cli/conf.d), чтобы добавить файл общего файла imap, а затем, перезапустите сервер Apache. Раскоментируйте

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

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

В Mac OS X с Homebrew, как очевидно, PHP уже установлен из-за ошибки, которую мы не можем запустить:

Обновление: последняя версия brew instal php —with-imap больше не будет работать .

Также установка только модуля здесь не подойдет:

Итак, мы должны переустановить его:

Это займет некоторое время 🙂 (построено за 8 минут 17 секунд)

4 M5M400 [2016-01-03 21:26:00]

Во время миграции с Ubuntu с 12.04 по 14.04 я тоже наткнулся на это и хотел поделиться этим, поскольку с Ubuntu 14.04 LTS расширение IMAP больше не загружается по умолчанию.

Проверьте, установлено ли расширение:

должен дать ответ вроде этого:

если нет, установите его.

Чтобы действительно включить расширение

должен исправить его для apache. Для CLI сделать то же самое в/etc/php5/cli/conf.d

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

2 Robert [2013-08-13 04:26:00]

если он установлен с помощью php 5.3.

sudo yum install php53-imap

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

sudo/sbin/service httpd restart или sudo service apache2 restart

0 Amal [2019-02-06 15:32:00]

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

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

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

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

sudo apt-get install php-imap

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

проверить, что модуль установлен php -m | grep imap

I am trying to access my gmail account through my localhost. However, I am getting the response:

Fatal error: Call to undefined function imap_open()

This is my code:

12 Answers 12

Simple enough, the IMAP extension is not activated in your PHP installation. It is not enabled by default. If your local installation is running XAMPP on Windows, you have to enable it as described in the XAMPP FAQ:

Where is the IMAP support for PHP?

As default, the IMAP support for PHP is deactivated in XAMPP, because there were some mysterious initialization errors with some home versions like Windows 98. Who works with NT systems, can open the file «xamppphpphp.ini» to active the php exstension by removing the beginning semicolon at the line «;extension=php_imap.dll» . Should be: extension=php_imap.dll

Now restart Apache and IMAP should work. You can use the same steps for every extension, which is not enabled in the default configuration.

The Installation Procedure is always the same, but the package-manager and package-name varies, depending which distribution, version and/or repository one uses. In general, the steps are:

a) at first, user privilege escalation is required, either obtained with the commands su or sudo .

b) then one can install the absent PHP module with a package manager.

c) after that, restarting the apache2 HTTP daemon is required to load the module.

d) at last, one can run php -m | grep imap to see if the PHP module is now available.

On Ubuntu the APT package php5-imap (or php-imap ) can bei installed with apt-get :

On Debian, the APT package php5-imap can be installed aptitude (or apt-get ):

On CentOS and Fedora the RPM package php-imap can be installed with yum (hint: the name of the package might be something alike php56w-imap or php71w-imap , when using Webtatic repo):

On systemd systems, while using systemd units, the command to restart unit httpd.service is:

The solution stated above has the problem, that when the module was already referenced in:

It might throw a:

That happens, because it is referenced in the default php.ini file (at least on Ubuntu 12.04) and a PHP module must at most be referenced once. Using INI snippets to load modules is suggested, while the the directory /etc/php5/conf.d/ (that path may also vary) is being scanned for INI files:

Ubuntu also features proprietary commands to manage PHP modules, to be executed before restarting the web-server:

Once the IMAP module is loaded into the server, the PHP IMAP Functions should then become available; best practice may be, to check if a module is even loaded, before attempting to utilize it.

Оцените статью