Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.189.180.76] |
|
Сообщ.
#1
,
|
|
|
Есть система lfs версии 7.0
В ней из исходников собран apache версии 2.4.18 и php версии 5.5.13 Мне нужен был только модуль для apache и не нужен был php интерпретатор, но собрать без интерпретатора так и не получилось (в моём вопросе отправки почты - интерпретатор, помог выяснить некоторый вопрос), собирал несколько раз, то собрал без графической библиотеки и капча не работала, то ещё без каких то библиотек. На сборку потратил кучу времени, но в конце концов собрал и всё заработало. Собирал apache вот с такими опциями: ./configure --enable-authnz-fcgi \ --enable-layout=LFS \ --enable-mods-shared="all cgi" \ --enable-mpms-shared=all \ --with-apr=/usr/bin/apr-1-config \ --with-apr-util=/usr/bin/apu-1-config \ --enable-suexec=shared \ --with-suexec-bin=/usr/lib/httpd/suexec \ --with-suexec-docroot=/srv/apache \ --with-suexec-caller=apache \ --with-suexec-userdir=public_html \ --with-suexec-logfile=/var/log/httpd/suexec.log \ --with-suexec-uidmin=100 php собирал вот с такими опциями: ./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-apxs2=/usr/bin/apxs \ --datadir=/usr/share/php \ --mandir=/usr/share/man \ --disable-ipv6 \ --enable-dba \ --enable-dba=shared \ --with-gdbm \ --enable-maintainer-zts \ --enable-fpm \ --with-fpm-user=apache \ --with-fpm-group=apache \ --with-config-file-path=/etc \ --with-pcre-regex=/usr \ --with-zlib \ --enable-bcmath \ --with-bz2 \ --enable-calendar \ --with-curl \ --enable-exif \ --enable-ftp \ --with-kerberos \ --with-t1lib \ --with-gettext \ --with-gmp \ --with-ldap-sasl \ --without-pdo-sqlite \ --with-pspell \ --with-readline \ --with-snmp \ --with-iconv \ --with-openssl \ --with-openssl-dir=/usr \ --with-gd=/usr \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-zlib-dir=/usr \ --with-freetype-dir=/usr \ --with-mysql \ --with-mysql-sock=/var/run/mysql \ --enable-sockets \ --with-mysql=mysqlnd \ --with-mysqli \ --with-mysqli=mysqlnd \ --with-pdo-mysql \ --with-pdo-mysql=mysqlnd \ --enable-mbstring До сборки apache и php пришлось собрать вот такие пакеты программ: valgrind-3.9.0.tar.bz2 apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 xproto-7.0.26.tar.gz xextproto-7.3.0.tar.gz xtrans-1.3.4.tar.gz xcb-proto-1.10.tar.bz2 util-macros-1.19.0.tar.bz2 dmxproto-2.3.1.tar.bz2 inputproto-2.3-1.tar.bz2 kbproto-1.0.6-1.tar.bz2 libXau-1.0.8.tar.bz2 libpthread-stubs-0.1.tar.bz2 libxcb-1.10.tar.bz2 xf86bigfontproto-1.2.0.tar.bz2 xf86dgaproto-2.1.tar.bz2 xf86driproto-2.1.1.tar.bz2 xf86miscproto-0.9.3.tar.bz2 xf86rushproto-1.1.2.tar.bz2 xf86vidmodeproto-2.3.1.tar.bz2 xineramaproto-1.2.1.tar.bz2 libX11-1.6.2.tar.gz libXpm-3.5.11.tar.bz2 yasm-1.2.0.tar.gz libvpx-v1.3.0.tar libgd-2.1.0.tar t1lib-5.1.2.tar.gz Без этих пакетов ни apache ни php не собирался. После установки всего этого, поверил работу apache и php взял работающий сайт написанный на cms с базой данный - mysql. Всё работало отлично, работало с базой данный записывались, выбирались из базы и т. д. Работала капча. phpinfo в прикреплённом файле phpinfo.mht Вот файл из которого пытаюсь отправить почту: <?php set_error_handler('err_handler'); function err_handler($errno, $errmsg, $filename, $linenum) { $date = date('Y-m-d H:i:s (T)'); $f = fopen('errors.txt', 'a'); if (!empty($f)) { $filename =str_replace($_SERVER['DOCUMENT_ROOT'],'',$filename); $err = "$errmsg = $filename = $linenum\r\n"; fwrite($f, $err); fclose($f); } } error_reporting(E_ALL); ini_set('log_errors', 'On'); ini_set('error_log', '/var/log/httpd/php_errors.log'); ini_set("display_errors", "1"); try { if (mail("xxxxx@xxxx.xx", "test111", "test222")) { echo "Почта работает."; } else { echo "Почта не работает."; } } catch (Exception $exc) { error_log($exc->getMessage()); } ?> Для отправки почты использую ssmtp, в конфигах ssmtp всё прописано для отправки почты, почта отправляется из командной строки, из командной строки ssmtp работает отлично. В php.ini включил следующие опции: error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED log_errors = On error_log = /var/log/httpd/php_errors.log mail.log = /var/log/httpd/php_mail.log SMTP = localhost smtp_port = 465 sendmail_path = /usr/local/sbin/ssmtp -t При запуске apache в файле error.log пишется вот что: [Sun Nov 20 18:37:45.524273 2016] [mpm_event:notice] [pid 23986:tid 3074820368] AH00491: caught SIGTERM, shutting down No log handling enabled - using stderr logging MIB search path: $HOME/.snmp/mibs:/usr/local/share/snmp/mibs Cannot find module (SNMPv2-MIB): At line 0 in (none) Cannot find module (IF-MIB): At line 0 in (none) Cannot find module (IP-MIB): At line 0 in (none) Cannot find module (TCP-MIB): At line 0 in (none) Cannot find module (UDP-MIB): At line 0 in (none) Cannot find module (HOST-RESOURCES-MIB): At line 0 in (none) Cannot find module (NOTIFICATION-LOG-MIB): At line 0 in (none) Cannot find module (DISMAN-EVENT-MIB): At line 0 in (none) Cannot find module (DISMAN-SCHEDULE-MIB): At line 0 in (none) Cannot find module (UCD-SNMP-MIB): At line 0 in (none) Cannot find module (UCD-DEMO-MIB): At line 0 in (none) Cannot find module (SNMP-TARGET-MIB): At line 0 in (none) Cannot find module (NET-SNMP-AGENT-MIB): At line 0 in (none) Cannot find module (HOST-RESOURCES-TYPES): At line 0 in (none) Cannot find module (SNMP-MPD-MIB): At line 0 in (none) Cannot find module (SNMP-USER-BASED-SM-MIB): At line 0 in (none) Cannot find module (SNMP-FRAMEWORK-MIB): At line 0 in (none) Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none) Cannot find module (SNMP-COMMUNITY-MIB): At line 0 in (none) Cannot find module (IP-FORWARD-MIB): At line 0 in (none) Cannot find module (NET-SNMP-PASS-MIB): At line 0 in (none) Cannot find module (NET-SNMP-EXTEND-MIB): At line 0 in (none) Cannot find module (UCD-DLMOD-MIB): At line 0 in (none) Cannot find module (SNMP-NOTIFICATION-MIB): At line 0 in (none) Cannot find module (SNMPv2-TM): At line 0 in (none) Cannot find module (NET-SNMP-VACM-MIB): At line 0 in (none) [Sun Nov 20 18:37:48.829030 2016] [mpm_event:notice] [pid 25990:tid 3075352848] AH00489: Apache/2.4.18 (Unix) PHP/5.5.13 configured -- resuming normal operations [Sun Nov 20 18:37:48.829191 2016] [core:notice] [pid 25990:tid 3075352848] AH00094: Command line: '/usr/sbin/httpd' Когда в браузере открываю этот сайт то почта не отправляется. Срабатывает коммутатор if и выводится: "Почта не работает." В логаг тишина. В access.log для этого сайта. xx.xx.xx.xx - - [20/Nov/2016:18:42:04 +0200] "GET / HTTP/1.1" 200 33 "-" "Opera/x.xx (X11; Linux i686) Presto/x.xx.xxx Version/xx.xx" В error.log для этого сайта ничего нет. В access.log общий для apache ничего нет. В error.log общий для apache новых записей нет, кроме старых приведённых выше после запуска apache. В fpm-php.log ничего нет. В php_errors.log ничего нет. В php_mail.log [20-Nov-2016 18:43:58 Europe/Kiev] mail() on [/xxxx/xxx/xxxxxx/xxx/xxxx.xx/index.php:21]: To: xxxx@xxxx.xx -- Headers:. Если php файл, в котором я пытаюсь отправить почту, передать php интерпретатору php -f < index.php то почта отправляется!!!! Получается php модуль для apache почту не может отправить, а php интерпретатор почту отправляет. Подскажите хоть в каком направлении смотреть, или как ещё можно включить логи, что бы хоть что нибудь написало.... За помощь заранее благодарен! PS. Что бы не раскрывать некоторые данные, я их заменил иксами. Прикреплённый файлphpinfo.mht (92,25 Кбайт, скачиваний: 486) |
Сообщ.
#2
,
|
|
|
1. `ls -lh /usr/local/sbin/ssmtp'
2. Что в логах собственно ssmtp? |
Сообщ.
#3
,
|
|
|
ls -lh /usr/local/sbin/ssmtp
-rwxr-xr-x 1 root root 30K сент. 9 2014 /usr/local/sbin/ssmtp Как включить логирование в ssmtp? Я так и не смог включить логирование в ssmtp/ |
Сообщ.
#4
,
|
|
|
Без понятия, если честно, но почтовик без логов -- это нонсенс. Скорее всего он их куда-то таки складывает.
|
Сообщ.
#5
,
|
|
|
negram спасибо тебе, что натолкнул меня на логи.
Я упёрся в логирование именно ssmtp (так и не нашёл где включить это логирование, именно ssmtp), но сама система пишет логи и они действительно есть в mail.log и sys.log. Я просто упустил это из виду. negram хотел тебя отблагодарить плюсом, но на этом форуме кнопку благодарности так и не нашёл. Глянув в логи увидел что ssmtp при запуске интерпретатора php запускается от рута и в логах пишется что пользователь root. А когда я письмо отправляю через сайт то ssmtp запускается от пользователя apache. В общем надо было подправить конфиги ssmtp. В файле /usr/local/etc/ssmtp/revaliases вместо строки: root:xxxxxx@ukr.net:smtp.ukr.net:465 вписать или дописать строку: apache:xxxxxx@ukr.net:smtp.ukr.net:465 А в файле: /usr/local/etc/ssmtp/ssmtp.conf строку: root=xxxxxx@ukr.net # от чьего имени шлем письма можно оставить, можно удалить, а можно поменять на: apache=xxxxxx@ukr.net # от чьего имени шлем письма и тогда всё заработает. И ещё. У меня apache работает в chroot. В этом же chroot находится и ssmtp. Так вот для работы ssmtp нужен ещё и bash, но обязательно что бы он назывался не bash, а sh. Нужно переименовать bash в sh или создать ссылку sh на bash. Конфиги пользователей .bashrc .profile и т. д. как и сами домашние директории пользователей от которых запускается ssmtp, а так же домашняя директория root и файлы /etc/bashrc /etc/profile не нужны. Необходимо только наличие всех необходимых библиотек для баша libhistory.so и т.д. Также нужны файлы /etc/passwd /etc/group /etc/shadow с пользователем от которого запускается apache, в моём случае это пользователь apache. Так же ещё нужны все необходимые библиотеки для apache, php и ещё некоторые файлы. Всё вопрос решённый тему можно закрывать. |