PHP → mail(), msmtp и Яндекс.Почта для домена
Переносил к себе на сервер один сайт и наткнулся на такую задачку, как отправка писем. Письма в движке этого сайта отправляются обычной функцией mail, а желания (да, в общем-то, и потребности) переписывать хоть одну строчку кода не было. Для отправки сообщений я давно уже использую сервис Яндекс.Почта для домена. Есть, конечно, куча других вариантов, но и этот отлично работает. Можно отправлять почту и своими силами, но имеется большая вероятность попасть в папку "спам" у получателей, необходимо настраивать разные штуки, вроде SPF и DKIM. В общем, было принято решение подружить mail и Яндекс.Почту
Для отправки задействуем транспорт SMTP, а отправлять будем простым клиентом msmtp. Устанавливается он двумя движениями пальцев, даже писать неохота, но напишу (для Debian или Ubuntu).
1 | sudo apt-get install msmtp
|
PHP → Аутентификация через системных пользователей линукс
Предположим, что возникла потребность аутентифицировать пользователей PHP-приложения посредством уже существующих в системе пользователей. Тогда для решения этой задачи можно заюзать PAM (Pluggable Authentication Modules). Если в двух словах, то через эту систему производятся манипуляции с пользователями и их паролями такими программами, как login, passwd или su. Если нужно больше информации, тогда вам сюда, например.
Описываемые ниже действия происходят в Ubuntu 14.04. В той же убунте 12.04 имелся готовый пакет php5-pam-auth, но позже его не стало.
Ставить расширение будем из PECL, вот оно. Предварительно доустановим пару пакетов, если они ещё не установлены. Приступим:
1 2 | sudo apt-get install php5-dev libpam0g-dev
sudo pecl install PAM
|
Без php5-dev будет ругаться, что нету phpize, а без libpam0g-dev будет появляться гадостная ошибка install the the PAM library or use --with-pam=DIR to specify the location.
После успешной компиляции добавляем пару строк в php.ini
1 2 | extension=pam.so
pam.servicename="php"
|
И добавляем соответствующий сервис для PAM
1 2 3 4 | sudo su
cd /etc/pam.d
ln -s login php
|
Готово :)
P.S. Возможен ещё такой момент. При работе, например, через Apache или другой веб-сервер, функция pam_auth будет возвращать ложный результат независимо от правильности логина/пароля. Связано это с тем, что пользователь, от которого работает веб-сервер, не имеет доступ к файлу /etc/shadow. Возможно, что можно каким-то образом донастроить сервис php для PAM, с этим я разбираться не стал, а применил более простое решение - добавил пользователя апача в группу shadow, хоть и понимаю, что почти наверняка этим действием проделал ещё одну дыру в безопасности :)
1 | sudo usermod -aG shadow www-data
|
PHP → активация PHP-расширений
Поднимая проект на Laravel столкнулся с неожиданной проблемой. А именно, с невозможностью установки вендорских библиотек композером. Неожиданность тут в том, что расширение php5-mcrypt было у меня установлено. Однако composer не обманешь.
Небольшое исследование показало, что необходимое расширение хоть и присутствует, но не подключено. Если же расширение не установлено, то делается это так (в Ubuntu и Debian):
1 | sudo apt-get install php5-mcrypt
|
Но вернёмся к активации установленных расширений...
PHP → Установка ImageMagick
Так уж вышло, что понадобилось для для одного проекта такое расширение, как ImageMagick. Ну а раз понадобилось, то надо устанавливать.
На рабочем макинтоше всяческие апачи и пэхэпэшки проинсталлированы у меня через MacPorts, потому и установка разрешилась поиском по интернету и парой команд, что ниже
1 2 | sudo port install ImageMagick
sudo port install php5-imagick
|
Минут 45 ожидания (и наблюдения за компьютерной жизнью в консоли) и готово. Так долго вышло потому, что порты давно не обновлялись, а с установкой расширения попутно пересобралось всё, что только можно.
PHP → Локальные проблемы PHP
Подключился на днях к новому проекту на Symfony 2 и начались проблемы :) Проблемы не с симфонией, конечно, а с php, точнее, с его настройками. Скачал проект, установил внешние библиотеки и буквально с первой команды наблюдаю такую красоту в терминале.
PHP → Комментарии
Появилась возможность оставлять комментарии от зарегистрированный и незарегистрированных пользователей.
Теперь необходимо прикрутить сюда AJAX.
PHP → Регулярные выражения
Если не разобрался на все сто процентов, то использовал, по крайней мере, кое какие штуки из сабжа (чтобы подсветить ссылки в этом самом блоге). Оставляю полезные ссылки по теме на всякий случай.