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
Я сравнил эти файлы и они оказали различны, вот различия:
Я взял и скопировал файл /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 одна и та же запись:
[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 и пишет, что почта не работает и письмо действительно не отправляется. Получается, что дело не в этом модуле, тогда не понятно где, конфиги одинаковы для апача и клиента, ошибок не пишет. Может кто подскажет как подробное логирование включить.
Глянув в системные логи mail.log и sys.log (как включить логирование в самом ssmtp я так и не нашёл) увидел что 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 и ещё некоторые файлы.
Всё вопрос решённый тему можно закрывать. (Добавление)
кнопку вопрос решён не нашёл
Есть система lfs версии 7.0
В ней из исходников собран apache версии 2.4.18 и php версии 5.5.13
Мне нужен был только модуль для apache и не нужен был php интерпретатор, но собрать без интерпретатора так и не получилось (в моём вопросе отправки почты - интерпретатор, помог выяснить некоторый вопрос), собирал несколько раз, то собрал без графической библиотеки и капча не работала, то ещё без каких то библиотек. На сборку потратил кучу времени, но в конце концов собрал и всё заработало.
Собирал apache вот с такими опциями:
До сборки 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
Для отправки почты использую ssmtp, в конфигах ssmtp всё прописано для отправки почты, почта отправляется из командной строки, из командной строки ssmtp работает отлично.
Когда в браузере открываю этот сайт то почта не отправляется.
Срабатывает коммутатор 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. Что бы не раскрывать некоторые данные, я их заменил иксами.
Есть linux lfs версии 7.0 Из исходников установлены СУБД mysql версии
mysqld Ver 5.5.17-log for Linux on i686 (Source distribution),
веб-сервер apache версии
httpd -v
Server version: Apache/2.4.9 (Unix)
Server built: Apr 8 2014 19:04:23
и php версии
php -v
PHP 5.5.11 (cli) (built: Apr 23 2014 23:04:28)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
СУБД работает отлично, завёл пользователя, базу, из mysql клиента подсоединяюсь под этим пользователем и захожу в базу, всё работает нормально.
Веб-сервер работает то же отлично.
Сам модуль php для apach-а работает то же нормально. Создал страничку - <?php echo phpinfo(); ?>
и вот что она выдала по поводу mysql:
MySQL driver for PDO George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter
MySQL Zeev Suraski, Zak Greant, Georg Richter, Andrey Hristov
MySQLi Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel
MySQLnd Andrey Hristov, Ulf Wendel, Georg Richter, Johannes Schlüter
при этом по команде php -m модуля для работы с mysql вроде как нет:
php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
Всё бы было ничего но вот пытаюсь открыть такую страничку:
<?php
// Данные для mysql сервера
$dbhost = "localhost"; // Хост
$dbuser = "user"; // Имя пользователя
$dbpassword = "pas"; // Пароль
$dbname = "baza"; // Имя базы данных
// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
// Выбираем нашу базу данных
mysql_select_db($dbname, $link);
// Создаём таблицу customer
// т.е. делаем sql запрос
$query = "create table customer (id int(2) primary key auto_increment, name varchar(100), tel varchar(20))";
mysql_query($query, $link);
// Закрываем соединение
mysql_close($link);
?>
и выдаёт мне: Удаленный сервер или файл не найден хотя просто html страницы или страничку вида: <?php echo phpinfo(); ?> открывает отлично.
Смотрю в логи mysql а там вообще нет признака что бы под пользователем заходили, вообще конекта нет. Хотя из mysql клиента захожу нормально.
Вопрос у меня php собран без поддержки mysql?
И ещё один вопрос.
Запускал СУБД mysql и apache в chroot с скинутыми в этот chroot библиотеками и модулем php, так же с библиотеками. Всё работает отлично, правда работу php с mysql не проверял. Судя по работе не в chroot работать не будет, но второй вопрос не в этом. Подскажите пожалуйста при такой работе в chroot php будет работать с библиотеками расположенными в chroot или будет использовать системные библиотеки? Если системные то как заставить php не вылазить из chroot и использовать библиотеки скинутые в chroot?
В скрипте configure есть опция with-gd которая указывает на путь к паке где установлен этот gd но нет опции для того что бы откомпилить php без gd, опции --disable-gd нет, или я ошибаюсь????????
/prog/php-5.5.11/ext/gd/gd.c:57:22: фатальная ошибка: X11/xpm.h: Нет такого файла или каталога
компиляция прервана.
make: *** [ext/gd/gd.lo] Ошибка 1
Что это за gd не знаю, но:
gd установлен: libgd-2.1.0.tar иксов нет, что за файл xpm.h и из какого пакета он не знаю.
Мне всего то нужно установить модуль для apach-а, мне не нужен интерпретатор php.
Вот вывод configure: http://pastebin[dot]com/ePDNsh19
Вот вывод make: http://pastebin[dot]com/Z7bGcSLE
Как установить только модуль и как победить эту ошибку, если кто знает помогите пожалуйста!!!!!
Получилось померять на вход. Меряю при помощи javascript. На выход померять неполучается. На выход меряю при помощи php, уходят данные но все не уходят на половине выдаётся следующее:
Немного я подразобрался, проблема вот в чём необходимо сделать страницу пустую (бинарные нули) но размером например 200кбайт, как её сделать не пойму? Если кто знает подскажите пожалуйста. NVK Designer спасибо за понимание и поддержку.
Здравствуйте, форумчане.
Подскажите пожалуйста как написать скрипт для определения скорости интернет соединения, подробно не надо нужно в общих чертах. Какие функции использовать? Я так понимаю что надо закачивать на компьютер на котором проверяю скорость, страницу определённого размера, и проверить время её загрузки, например 200кбайт, причём она должна быть пустой, как её сделать? Это будет входящий канал, а как потом проверить исходящий канал? За ответ заранее благодарен.
Нужно объяснить ему что такое php а не как правильно хернёй страдать
Немного основы знаю, я не совсем правильно сформулировал вопрос.
Идея была в отказе от ява скриптов и от флэш, хотябы от ява скриптов, тоесть заменить их полностью пхп. Может быть есть такой пхп транслятор который на сервере часть кода на пхп преобразует в html, а часть пропускает и она уже выполняется на клиентской машине пхп плагином-интерпретатором к браузеру.
Например я написал программу на С++ которая работает через сеть. У клиента на его компе устанавливается клиентская часть, на сервере устанавливается серверная часть.
Когда клиент запускает свою клиентскую часть она через сеть коннектиться к серверной и работает.Некоторая часть программы выполняется на клиентском компе, какаято на сервере, данные гуляют по сети от клиента к серверу и обратно.
В веб такое можно реализовать на сколько я знаю, может быть я ошибаюсь, с помощью пхп и ява скриптов. Тоесть у клиента не надо устанавливать клиентскую часть, он просто в браузере набирает адрес и ему в этот браузер загружается интерфейс. То что должно выполняться на компе клиента выполняют ява скрипты через ява плагин-интерпретатор, то что должно выполняться на сервере выполняется при помощи пхп через пхп транслятор.
Вопрос был в том что можно ли всё это реализовать только при помощи пхп, тоесть может быть есть какой нибудь другой транслятор который пропускает часть кода, которая выполняется на клиентском компе при помощи какогото пхп плагина-интерпретатора. Есть ли такое для пхп? Если есть то где про это можно почитать, если нету то почему нет, может быть это не нужно, хотя на мой взгляд тогда можно будет отказаться от ява скриптов и полностью реализовывать такие можно сказать приложения только на пхп.
Здравствуйте, форумчане.
У меня вопрос, можно ли заменить яву и флэш пхп скриптами? Сейчас попытаюсь всё разъяснить.
Например я пользуюсь браузером опера, устанавливаю к ней флэш и ява плагины.
Если на странице есть флэшка то её обрабатывает флэш плагин, тоесть этот флэш плагин является как бы транслятором для флэшки. Флэшка является как бы программой которая выполняется через этот транслятор-флэш плагин, данные с которого передаются в браузер. Точно так же как я понимаю обстоит дело и с ява скриптами.
Существует ли какой либо транслятор-плагин под пхп, тоесть вместе с html кодом на клиентскую машину приезжает и пхп код который обрабатывается этим пхп транслятором, что бы вообще отказаться от ява скриптов, флэшек и заменить их на пхп.
Если такой транслятор существует то где его можно скачать и почитать про него? Если нет то интересно почему он до сих пор не написан?
За ответ заранее благодарен.