PHP

From SysadminWiki.ru
Jump to: navigation, search

Информация о PHP и его модулях

Информацию о самом php можно получить, открыв в браузере предварительно созданный файл info.php:

<?php
  phpinfo();
?>

если есть проблемы с доступом к скрипту info.php через браузер, то то же самое получим, выполнив команду:

# php -i > info.html


Почта из PHP

<?php
    mail("address@example.com", "Mail from PHP", "Sending mail via PHP function mail()\nС такого-то сайта\nТакие-то дополнительные данные");
?> 

Уровень оповещения об ошибках

Чтобы не получать предупреждения PHP вроде Undefined variable и Undefined index, нужно изменить уровень оповещения в /etc/php/.../php.ini:

error_reporting  =  E_ALL & ~E_NOTICE

Отладка (debug)

  • Вывод информации о переменной любого типа (тип, значение, в том числе массивы): var_dump() и print_r(). Пример:
var_dump($a);
print_r($b);
  • Вывод значения переменной в виде PHP кода: var_export().

Работа над ошибками

Общие рекомендации

- Если проблемы с насройкой php, то можно включить лог и посмотреть, что не работает. Редактируем /etc/php/4.4.7/apache2-mod_php/php.ini:

display_errors = On
display_startup_errors = On
log_errors = On
error_log = /var/log/php.log


Если php страницы отображаются не в той кодировке, то меняем кодировку по умолчанию:

default_charset = "windows-1251"


popen() has been disabled for security reasons

Warning: popen() has been disabled for security reasons in /var/www/apache2/html/webmail/class/deliver/Deliver_SendMail.class.php on line 98

Это означает что в PHP запрещён вызов команды popen(). Снимаем запрет в файле php.ini (Путь к файлу зависит от системы и версии php, например /etc/php/4.4.7/apache2-mod_php/php.ini) убирая упоминания этой команды в запрещающих опциях: disable_functions, suhosin.executor.func.blacklist, suhosin.executor.eval.blacklist

После исправления нужно перезагрузить Apache.