Новичок
Покинул форум
Сообщений всего: 15
Дата рег-ции: Сент. 2008
Помог: 0 раз(а)
|
Есть тестовая страничка:
CODE ( text):
скопировать код в буфер обмена
<?php ini_set('error_reporting', E_ALL); ini_set('display_errors', 'On'); ini_set('display_startup_errors', 'On'); if (mail("user@ukr.net", "1234test1234", "12qwerty34")) { echo "Почта работает."; } else { echo "Почта не работает."; } echo phpinfo(); ?>
Открываю её и письмо не отправляется.
Установлен apache2 и к немо следующие пакеты php:
CODE ( text):
скопировать код в буфер обмена
apt-get -y install php7.0 apt-get -y install php7.0-common apt-get -y install php7.0-curl apt-get -y install php7.0-mysql apt-get -y install php7.0-cli apt-get -y install libapache2-mod-php7.0 apt-get -y install php7.0-gd
После установки этих пакетов была выполнена команда a2enmod php7 и потом запущен апач.
CODE ( text):
скопировать код в буфер обмена
uname -a Linux ukemp.ukrkran.local 4.4.0-96-generic #119-Ubuntu SMP Tue Sep 12 14:58:51 UTC 2017 i686 i686 i686 GNU/Linux apache2 -version Server version: Apache/2.4.18 (Ubuntu) Server built: 2017-09-18T15:09:02 php --version PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.22-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies ldd /usr/lib/apache2/modules/libphp7.0.so linux-gate.so.1 => (0xb7745000) libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xb733d000) libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7322000) libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb72ad000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7258000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7253000) libxml2.so.2 => /usr/lib/i386-linux-gnu/libxml2.so.2 (0xb7072000) libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0xb7008000) libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xb6e1b000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6c65000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb6c48000) /lib/ld-linux.so.2 (0xb7746000) libicuuc.so.55 => /usr/lib/i386-linux-gnu/libicuuc.so.55 (0xb6ab2000) liblzma.so.5 => /lib/i386-linux-gnu/liblzma.so.5 (0xb6a8c000) libicudata.so.55 => /usr/lib/i386-linux-gnu/libicudata.so.55 (0xb51d3000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb505c000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb503f000)
В качестве мта использую ssmtp
Вот часть конфига apache1.conf относящегося к открываемому сайту с которого должно отправляться письмо:
CODE ( text):
скопировать код в буфер обмена
<VirtualHost 192.168.5.254:80> DocumentRoot /data/web/apache/www/sait2.ru ServerName sait2.ru ServerAlias www.sait2.ru <Directory /data/web/apache/www/sait2.ru> Options Includes AllowOverride all </Directory> ErrorLog /var/log/apache2/sait2.ru/error.log CustomLog /var/log/apache2/sait2.ru/access.log combined </VirtualHost>
Вот содержимое файлов
/etc/apache2/mods-available/php7 .0.conf
CODE ( text):
скопировать код в буфер обмена
<FilesMatch ".+\.ph(p[3457]?|t|tml)$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch ".+\.phps$"> SetHandler application/x-httpd-php-source # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Require all denied </FilesMatch> # Deny access to files without filename (e.g. '.php') <FilesMatch "^\.ph(p[3457]?|t|tml|ps)$"> Require all denied </FilesMatch> # Running PHP scripts in user directories is disabled by default #. # To re-enable PHP in user directories comment the following lines # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it # prevents .htaccess files from disabling it. <IfModule mod_userdir.c> <Directory /home/*/public_html> php_admin_flag engine Off </Directory> </IfModule>
/etc/apache2/mods-available/php7 .0.load
Они стандартные.
Вот некоторое содержимое файлов:
/etc/php/7.0/apache2/php.ini
/etc/php/7.0/cgi/php.ini
/etc/php/7.0/cli/php.ini
/etc/php/7.0/fpm/php.ini
CODE ( text):
скопировать код в буфер обмена
display_errors = On display_startup_errors = On error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT SMTP = localhost smtp_port = 465 sendmail_path = /usr/sbin/ssmtp -t mail.add_x_header = On mail.log = /var/log/php/php_mail.log date.timezone = Europe/Kiev
ssmtp настроен правильно и из командной строки письмо прекрасно отправляется, мало того если в консоли выполнить команду:
php /data/web/apache/www/sait2.ru/in dex.php
то письмо то же прекрасно отправляется!
В этот файл я в последствии включил phpinfo()
и сравнил вывод информации в браузере и в консоли, они отличались только тем, что когда страницу открываю в браузере используется конфиг /etc/php/7.0/apache2/php.ini, а когда использую выше приведённую команду, то конфиг /etc/php/7.0/cli/php.ini
Я сравнил эти файлы и они оказали различны, вот различия:
CODE ( text):
скопировать код в буфер обмена
diff /root/php/php.ini /etc/php/7.0/cli/php.ini 299c299 < disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, --- > disable_functions = 359c359 < expose_php = Off --- > expose_php = On 389c389 < memory_limit = 128M --- > memory_limit = -1 462c462 < display_errors = Off --- > display_errors = On 473c473 < display_startup_errors = Off --- > display_startup_errors = On 484d483 <
Я взял и скопировал файл /etc/php/7.0/cli/php.ini в папки /etc/php/7.0/apache2/ /etc/php/7.0/cgi/ /etc/php/7.0/fpm/
Поэтому в этих папках фалы php.ini стали одинаковы, перезапустил апач, открыл страницу но письмо не отправилось, причём при удачной отправке письма по команде php /data/web/apache/www/sait2.ru/in dex.php и при открытии страницы в логах /var/log/php/php_mail.log одна и та же запись:
CODE ( text):
скопировать код в буфер обмена
[11-Oct-2017 12:05:07 Europe/Kiev] mail() on [/data/web/apache/www/sait2.ru/index.php:5]: To: user@ukr.net -- Headers:.
Файл /var/log/php/php_errors.log пустой
Я подумал что проблема в модуле для апача /usr/lib/apache2/modules/libphp7 .0.so
У меня для другой системы был ранее собран из исходников модуль для апача пятой версии, по размерам он был в 6 раз больше чем этот. Этот модуль точно работает, так как на другой системе письмо прекрасно отправляется. Я взял его (к нему не хватало нескольких библиотек, я их просто скопировал после чего выполнил команду ldconfig), проверил библиотеки были все. Запустил апач, он запустился нормально. Открываю сайт, но письмо не отправляется. В браузер никаких ошибок не пишет, хотя как видно я вывод включал. Просто срабатывает if и пишет, что почта не работает и письмо действительно не отправляется. Получается, что дело не в этом модуле, тогда не понятно где, конфиги одинаковы для апача и клиента, ошибок не пишет. Может кто подскажет как подробное логирование включить.
В логаг апача вот что:
Запуск апача:
/usr/sbin/apache2 -k start
CODE ( text):
скопировать код в буфер обмена
ps axu | grep apache root 6266 0.7 1.3 136500 28196 ? Ss 12:37 0:00 /usr/sbin/apache2 -k start apache 6267 0.0 0.3 136524 7984 ? S 12:37 0:00 /usr/sbin/apache2 -k start apache 6268 0.0 0.3 136524 7984 ? S 12:37 0:00 /usr/sbin/apache2 -k start apache 6269 0.0 0.3 136524 7984 ? S 12:37 0:00 /usr/sbin/apache2 -k start apache 6270 0.0 0.3 136524 7984 ? S 12:37 0:00 /usr/sbin/apache2 -k start apache 6271 0.0 0.3 136524 7984 ? S 12:37 0:00 /usr/sbin/apache2 -k start root 6273 0.0 0.0 5100 900 pts/0 S+ 12:38 0:00 grep apache
/var/log/apache2/access.log пустой
в /var/log/apache2/error.log вот что:
CODE ( text):
скопировать код в буфер обмена
[Wed Oct 11 12:37:58.188215 2017] [mpm_prefork:notice] [pid 6266] AH00163: Apache/2.4.18 (Ubuntu) PHP/7.0.22-0ubuntu0.16.04.1 configured -- resuming normal operations [Wed Oct 11 12:37:58.188374 2017] [core:notice] [pid 6266] AH00094: Command line: '/usr/sbin/apache2'
открываю сайт, пробую двумя браузерами, очень старой оперой и свежим firefox-сом
/var/log/apache2/sait2.ru/error. log пустой
в /var/log/apache2/sait2.ru/access .log вот что:
CODE ( text):
скопировать код в буфер обмена
192.168.5.226 - - [11/Oct/2017:12:40:39 +0300] "GET / HTTP/1.1" 200 90683 "-" "Opera/9.80 (X11; Linux i686) Presto/2.12.388 Version/12.15" 192.168.5.226 - - [11/Oct/2017:12:42:36 +0300] "GET / HTTP/1.1" 200 90646 "-" "Mozilla/5.0 (X11; Linux i686; rv:52.0) Gecko/20100101 Firefox/52.0"
В чём причина не работы функции mail и как включить очень подробное логирование так и не знаю.
За помощь заранее благодарен!
|