php — Не отправляется почта mail() с сервера — Stack Overflow на русском

php - Не отправляется почта mail() с сервера - Stack Overflow на русском Хостинг
Содержание
  1. Что делать если функция не отправляет письма
  2. Так почему же не работает php-программа на бесплатном хостинге?
  3. Что это такое
  4. При обращении к базе из php вместо русских букв стоят «????», что делать?
  5. Что такое php?
  6. Почему не работает php-скрипт?
  7. Что делать, если не обрабатываются php-скрипты
  8. Вместо содержимого сайта отображается пустая белая страница
  9. Не тестируйте сайт хостинг-провайдера
  10. Не измеряйте скорость хостинга с помощью оценок Google PageSpeed Insights
  11. Ошибка «Fatal error: Сall to undefined function»
  12. Не проверяйте скорость хостинга на вашем устройстве
  13. Ошибка «Fatal error: Allowed memory size of XXX bytes exhausted»
  14. Не измеряйте производительность хостинга секундомером или «на глаз»
  15. Ошибка «Headers already sent»
  16. Нехватка оперативной памяти
  17. Ioncube php loader: как установить на хостинг
  18. Php header("location:index.html") nor javascript in php not working
  19. Php: phpinfo — manual
  20. Ваш тариф хостинга — host-lite или win-lite
  21. Где находятся настройки версий php в ispmanager
  22. Другие особенности mail()
  23. Есть ли возможность редактирования файла php.ini?
  24. Изменение атрибутов файлов на windows-хостинге с помощью командной строки
  25. Как включить/выключить глобальные переменные?
  26. Как запустить задание в crontab, используя определенную версию php?
  27. Как не нужно тестировать скорость и производительность хостинга?
  28. Как поменять атрибуты файлов и папок в unix?
  29. Как правильно протестировать хостинг?
  30. Как проверить версию php
  31. Как узнать настройки php на сервере, где размещен мой аккаунт?
  32. Как выбрать версию php при работе в командной строке (ssh)
  33. Как сменить версию php
  34. Как установить php на хостинг
  35. Лирическое отступление об атрибутах файлов в unix-системах
  36. Можно ли использовать на виртуальном хостинге php 5.3?
  37. Не отправляется почта mail() с сервера
  38. Не работает header() на хостинге timeweb, на другом то же самое прекрасно уже много лет работает
  39. Не работает php скрипт отправки email, в чем может быть проблема?
  40. Не обрабатывается php в html
  41. Немного теории
  42. Отключена поддержка php в ispmanager
  43. Отправка с вложением
  44. Перенаправление заголовка php не работает
  45. Проблемы с кодировкой
  46. Проверка php. как проверить код? | otus
  47. Производительность php и mysql в wordpress
  48. Производительность php и баз данных mysql
  49. Производительность php-скриптов
  50. Смена атрибутов на windows-хостинге
  51. Тест 1: speedtest – скорость (пропускная способность) соединения хостинг-провайдера
  52. Тест 2: производительность и скорость диска
  53. Тест 3: скорость dns-серверов на хостинге
  54. Тест 4: производительность php и баз данных mysql
  55. Тест 5: производительность хостинга под нагрузкой
  56. Тест 6: тест скорости сайта
  57. Функция mail() не отправляет почту.

Что делать если функция не отправляет письма

Даже с учетом всех перечисленных выше моментов, mail может не работать. При этом на локальном сервере все отправляется как следует. Одной из причин почему так происходит — неправильная настройка функции на хостинге. Поэтому нужно обратиться к конфигурационному файлу php.ini, в котором посмотрите функцию «disable_functions».

Для проверки работоспособности напишите такой несложный код и разместите его в корне созданного интернет-проекта.

Если все работает правильно, то на экране браузера появится цифра один «1». Ее возвратит «print» после выполнения.

Так почему же не работает php-программа на бесплатном хостинге?

Для корректной работы программы у неё должен быть выставлен признак «X» для всех уровней доступа. Кроме того, у папки, из которой вызывается программа также должны быть установлены разрешения на доступ к содержимому «X«. Кроме того, у владельца должны быть права на чтение и запись, а всем остальным достаточно только права на чтение.

Если вышеизложенные права записать по правилам UNIX-атрибутов, то мы получим «RWX R-X R-X» или 755. Именно эти атрибуты выставляются в приведённой иллюстрации.

Что это такое

Mail применяется для отправки сообщений при условии что будут выполняться некоторые правила. Самое главное — эта функция не подходит для пересылки большого числа писем. Потому что после каждой отправки она закрывает, а потом опять открывает соединение с почтовым сервером. Это приведет к перерасходу мощностей на хостинге.

Настройка функции происходит в конфигурационном файле php.ini. В нем прописывают путь к лог-файлам, задают значение порта и так далее.

Mail принимает пять аргументов из которых три — обязательные:

  • Адрес отправителя;
  • Тайтл письма;
  • Текст сообщения.

Например, напишем такие строки кода

При обращении к базе из php вместо русских букв стоят «????», что делать?

Кодировка по умолчанию на серверах стоит utf8. Возможно, БД в кодировке cp1251, а при подключении по умолчанию стоит utf8. Исправить это можно, выполняя SQL запрос

сразу после подключения к БД.

Что такое php?

PHP — это язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. На данный момент один из самых популярных языков в мировой веб-индустрии.

Почему не работает php-скрипт?

Поддержка PHP включена по умолчанию. При возникновении проблем проверьте следующее:

Что делать, если не обрабатываются php-скрипты

Перечислим основные причины этой ошибки.

Вместо содержимого сайта отображается пустая белая страница

Вы увидите пустую страницу, если в процессе работы скриптов произошла ошибка. По умолчанию на хостинге RU-CENTER отключен вывод ошибок в целях безопасности.

Для диагностики рекомендуем включить отображение ошибок в настройках модуля PHP.

Чтобы включить отображение ошибок, в настройках модуля PHP включите параметры Обработка ошибок и журнализации error_reporting и Показывать ошибки посетителям сайта display_errors и сохраните изменения.

Если ошибка по-прежнему не будет отображаться — это значит, что вывод ошибок отключен в конфигурационных файлах или скриптах сайта. Для их включения рекомендуем проконсультироваться с разработчиками сайта либо обратиться к документации по используемой вами CMS.

Не тестируйте сайт хостинг-провайдера

Сайт хостинг-провайдера не очень хорошее место, для проверки с помощью внешних инструментов, насколько хорошо работает данный хостинг. Это немного похоже на то, как если бы вы хотели  оценить условия работы в конкретной компании по прибыли генерального директора.

Не измеряйте скорость хостинга с помощью оценок Google PageSpeed Insights

PageSpeed Insights — отличный инструмент, но для его успешного использования необходимо знать, для чего он нужен, и уметь правильно интерпретировать представляемые им данные.

Оценка по шкале от 0 до 100 в основном показывает, насколько хорошо оптимизировано содержание сайта (HTML, CSS, JavaScript, изображения), а не насколько хорошо и эффективно работает сервер.

PageSpeed Insights Результат
PageSpeed Insights оценка скорости загрузки сайта в баллах

Конечно, в PageSpeed ​​Insights вы найдете, помимо баллов, также значения «времени», которые показывают на базе лабораторных данных или собранных у посетителей сайта, насколько быстро данная страница может быть отображена для конечного пользователя. Однако, производительность сервера — это только одна из многих переменных, которые к тому же не постоянны и меняются с каждым последующим проведенным тестом.

В последнем тесте, описанном в этом руководстве (Тест 6: Тест скорости страницы), я покажу вам, как вы можете попробовать использовать Google PageSpeed ​​Insights для оценки эффективности хостинга. Не обращая внимания на баллы!

Ошибка «Fatal error: Сall to undefined function»

Подобные ошибки возникают, если в конфигурации веб-сервера отсутствуют необходимые для работы сайта расширения PHP. Сообщение об ошибке содержит имя функции, по которой можно определить название расширения:

  • Fatal error: Call to undefined function simplexml_load_file() in … — требуется расширение simplexml,
  • Fatal error: Call to undefined function mb_detect_encoding() in … — требуется расширение mbstring,
  • Fatal error: Call to undefined function ctype_alpha() in … — требуется расширение ctype.

Не проверяйте скорость хостинга на вашем устройстве

То, что сайт быстро загружается на вашем компьютере или смартфоне, вовсе не означает, что это происходит у всех.

Если вы когда-либо посещали определенную страницу ранее, вполне вероятно, что ваше устройство имеет кэш, то есть копию части или всего содержимого данного веб-сайта. В результате повторного посещения сайта его часть будет загружена с вашего диска, а не с хостинга, который вы хотите протестировать.

Другой проблемой является ваше Интернет-соединение. От того насколько хороший у вас Интернет будет зависеть скорость загрузки страницы. И я имею в виду не только скорость upload/download, но и задержки, ping и т. д.

Еще одна вещь, о которой стоит упомянуть, это само устройство (телефон, компьютер, планшет), на котором вы хотите проверить «быстро ли загружается сайт». Чем мощнее устройство (процессор, оперативная память, диск), тем быстрее может загружаться страница.

Это связано с тем, что одним из аспектов является скорость работы самого сервера, который отвечает на ваш запрос о доставке страницы, и совсем другим аспектом является рендеринг страницы (обработка HTML-кодов, CSS-стилей или Javascript) то, что собственно происходит на вашем устройстве.

Конечно, правильно проведенный тест на собственном устройстве может быть полезен в определенных ситуациях. Однако это не должно само по себе свидетельствовать о том, насколько хорошо работает хостинг.

Ошибка «Fatal error: Allowed memory size of XXX bytes exhausted»

Данная ошибка возникает, если в процессе работы скрипта была израсходована память, выделенная для его работы. Число в байтах сообщает текущее ограничение объема памяти. Это ограничение задается параметром memory_limit. Необходимо изменить параметр Максимальный объем памяти для работы скрипта (memory_limit)».

Если ошибка по-прежнему будет отображаться — это значит, что данный параметр переопределен в конфигурационных файлах или скриптах сайта.

В случае если скрипту недостаточно памяти при максимальном для тарифного плана значении memory_limit, это может означать, что работает он некорректно. В этом случае рекомендуем проконсультироваться с разработчиками скрипта.

Не измеряйте производительность хостинга секундомером или «на глаз»

Последнее, о чем я хочу предостеречь при тестировании скорости хостинга — это проверка чего—нибудь «на глаз». Если вы планируете делать выводы о том, работает ли хостинг быстро, основываясь на проверке секундомером, насколько быстро будет загружаться сайт, то это не лучшее решение. В тестах производительности часто учитываются не столько секунды, сколько миллисекунды.

Существует множество инструментов, скриптов и команд, которые позволяют вам точно и надежно проверить, как работает хостинг (я покажу вам их позже), но секундомер на вашем телефоне не является одним из них.

Ошибка «Headers already sent»

Данная ошибка чаще всего вызвана наличием так называемой BOM-сигнатуры в файлах сайта. В первую очередь проверьте конфигурационные файлы сайта, в которые вы могли вносить изменения.

Нехватка оперативной памяти

Если вы наблюдаете медленную работу сайта, нестабильную работу части функций, например отправки почты функцией mail(), проверьте статистику использования ресурсов, представленную в разделе Ресурсы панели управления хостингом.

Если график потребления памяти достигает ограничений доступной в рамках тарифного плана оперативной памяти, может наблюдаться нестабильная работа, частичная либо полная неработоспособность сайтов, так как серверу недостаточно ресурсов для обработки поступающих к нему запросов и выполнения скриптов. Использование ресурсов хостинга.

Ioncube php loader: как установить на хостинг

Модуль ionCube PHP Loader используется для шифрования PHP-файлов. Установка ionCube PHP Loader на хостинг не требуется — по умолчанию он есть на всех версиях PHP хостинга Linux, кроме сборок для 1C-Битрикс (в их названии присутствует префикс «-bx-»).

Php header("location:index.html") nor javascript in php not working

You have a misunderstanding of how AJAX is working in this situation. When you’re performing an AJAX call, a separate request is being sent as your POST to the given URL. This does not inherently affect the original page you are on in the client window. Essentially, what is happening is:

  1. A user clicks ‘logout’
  2. The server (i.e. not the client’s web browser) is sending a request to your logout.php
  3. logout.php runs its code and returns a response to your original page (success/fail in this case; or some data if you had a return in your PHP page)

The AJAX here is only a means of sharing information between the two pages, not to run them in succession. What you need to do is redirect the original page, and you can do this with JavaScript! After all, don’t forget that JavaScript is our client-side language, with PHP being the server-side one.

There are any number of ways to redirect in JavaScript which you can find. For example, you may use window.location.href in this case:

$('#logout_button').click(function(){
    $.ajax({
        type: 'POST',
        url: 'logout.php',
        error: function(response) { console.log(JSON.stringify(response))},

        success: function(data){
            window.location.href = "http://localhost/page_home.html";
            console.log(data);
        }
    });
});

Php: phpinfo — manual

After reading and trying various functions, I couldn’t find one that correctly parses all the configurations, strips any left-over html tag and converts special characters into UTF8 (e.g. ' into ‘), so I created my own by improving on the existing ones:

function phpinfo2array() {
$entitiesToUtf8 = function($input) {
// http://shhost.ru/manual/en/function.html-entity-decode.php#104617
return preg_replace_callback(«/(&#[0-9] ;)/», function($m) { return mb_convert_encoding($m[1], «UTF-8», «HTML-ENTITIES»); }, $input);
};
$plainText = function($input) use ($entitiesToUtf8) {
return trim(html_entity_decode($entitiesToUtf8(strip_tags($input))));
};
$titlePlainText = function($input) use ($plainText) {
return ‘# ‘.$plainText($input);
};
ob_start();
phpinfo(-1);
$phpinfo = array(‘phpinfo’ => array());

    // Strip everything after the <h1>Configuration</h1> tag (other h1’s)
if (!preg_match(‘#(.*<h1[^>]*>s*Configuration.*)<h1#s’, ob_get_clean(), $matches)) {
return array();
}
$input = $matches[1];
$matches = array();

    if(preg_match_all(
‘#(?:<h2.*?>(?:<a.*?>)?(.*?)(?:</a>)?</h2>)|’.
‘(?:<tr.*?><t[hd].*?>(.*?)s*</t[hd]>(?:<t[hd].*?>(.*?)s*</t[hd]>(?:<t[hd].*?>(.*?)s*</t[hd]>)?)?</tr>)#s’,
$input,
$matches,
PREG_SET_ORDER
)) {
foreach ($matches as $match) {
$fn = strpos($match[0], ‘<th’) === false ? $plainText : $titlePlainText;
if (strlen($match[1])) {
$phpinfo[$match[1]] = array();
} elseif (isset($match[3])) {
$keys1 = array_keys($phpinfo);
$phpinfo[end($keys1)][$fn($match[2])] = isset($match[4]) ? array($fn($match[3]), $fn($match[4])) : $fn($match[3]);
} else {
$keys1 = array_keys($phpinfo);
$phpinfo[end($keys1)][] = $fn($match[2]);
}

        }
}
return $phpinfo;
}

The output looks something like this (note the headers are also included but are prefixed with ‘# ‘, e.g. ‘# Directive’):

Array
(
[phpinfo] => Array
(
[0] => PHP Version 5.6.5
[System] => Darwin Calins-MBP 15.0.0 Darwin Kernel Version 15.0.0: Wed Aug 26 19:41:34 PDT 2022; root:xnu-3247.1.106~5/RELEASE_X86_64 x86_64
[Build Date] => Feb 19 2022 18:34:18
[Registered Stream Socket Transports] => tcp, udp, unix, udg, ssl, sslv3, sslv2, tls, tlsv1.0
[Registered Stream Filters] => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk
[1] => This program makes use of the Zend Scripting Language Engine:Zend Engine…
)

    [apache2handler] => Array
(
[Apache Version] => Apache/2.4.16 (Unix) PHP/5.6.5 OpenSSL/0.9.8zg
[Apache API Version] => 20220211
[Server Administrator] => webmaster@dummy-host2.example.com
[Hostname:Port] => sitestacker.local:0
[# Directive] => Array
(
[0] => # Local Value
[1] => # Master Value
)

            [engine] => Array
(
[0] => 1
[1] => 1
)

            [last_modified] => Array
(
[0] => 0
[1] => 0
)

Ваш тариф хостинга — host-lite или win-lite

На тарифах хостинга Host-Lite и Win-Lite не предусмотрена поддержка PHP. Узнать тариф хостинга можно на странице услуг в Личном кабинете. Для решения проблемы повысьте тарифный план хостинга.

Где находятся настройки версий php в ispmanager

Если на вашей услуге хостинга установлена панель управления ISPmanager, вы можете хранить настройки PHP отдельно для каждого домена, даже если эти домены используют одну и ту же версию PHP. Либо вы можете использовать общую версию PHP и её настройки для всех доменов.

Когда вы добавляете домен в панели управления ISPmanager, по умолчанию включается опция php.ini для домена. Если эта опция включена, настройки PHP будут храниться для каждого нового домена отдельно по пути /var/www/php-bin/имя-домена/php.ini.

Чтобы настройки общей версии PHP действовали сразу для всех доменов, при добавлении домена в панель ISPmanagerНЕ отмечайте галочку php.ini для домена. Настройки будут храниться по пути /var/www/php-bin-php(номер-версии-PHP)/php.ini.

Другие особенности mail()

Применение данной функции имеет множество нюансов, список которых зависит от используемой платформы (ОС) и других параметров. Основные из них я попробую перечислить:

Отправляемое email должно содержать установленный заголовок From, который задается через 4 (необязательный) параметр additional_headers. Его отсутствии может стать причиной того, что функция mail PHP не будет работать.

Все заголовки, установленные через additional_headers, должны быть разделены сочетанием управляющих символов новой строки и перевода каретки(rn).

Некоторые почтовые агенты, работающие на Unix, могут автоматически заменять n на rn. В результате заголовки разделяются двумя символами перевода строки и одним переводом каретки, что может привести к выводу ошибки. Если email не отсылается, попробуйте разделить все хедеры одним символом n. Но помните, что такой синтаксис является нарушением существующих стандартов.

Длина каждой строки не должна быть больше 70 символов. Строки между собой разделяются сочетанием управляющих символов rn.

Есть ли возможность редактирования файла php.ini?

PHP исполняется как модуль apache, при этом php.ini один для всех клиентов виртуального хостинга на определённом сервере. Большинство необходимых параметров можно изменять через .htaccess. Более подробно об этом можно прочитать здесь. 

При необходимости можно перевести работу сайта в режим CGI. Сделать это можно в разделе «Сайты», кликнув по значку PHP справа от нужного сайта. Там же можно указать нужные директивы PHP — они будут добавлены в виртуальный хост вашего домена.

Изменение атрибутов файлов на windows-хостинге с помощью командной строки

Подключаемся к файловой системе сервера с помощью клиента. Установка/снятие атрибутов производится с помощью команды ATTRIB. В команде применяются ключи [ R|-R][ A|-A][ H|-H][ S|-S] для установки или снятия соответствующих атрибутов, путь к файлу/папке (допускается маскирование), а также дополнительные ключи: [/S] — применить к папке и вложенным папкам, [/D] — обработка не только файлов, но и папок.

Примеры:

ATTRIB DEFAULT.HTML R H — приведёт к установке атрибутов Read only и Hidden файлу Default.html в текущей папке.

ATTRIB *.HTML -R -H -S /S — приведёт к сбросу атрибутов Read only, Hidden, System всем файлам с расширением *.html в текущей папке и во всех вложенных.

Как включить/выключить глобальные переменные?

В корне Вашего аккаунта есть файл .htaccess – файл дополнительной конфигурации веб-сервера Apache. Если такого файла нет, Вы можете создать его. Для включения глобальных переменных в него надо добавить строку:

php_flag register_globals on

Для выключения глобальных переменных:

php_flag register_globals off

Подробнее о файле .htaccess читайте здесь.

Как запустить задание в crontab, используя определенную версию php?

В задании необходимо прописать путь до интерпретатора PHP нужной версии. Например, для версии PHP 5.2 путь на сервере будет такой:

/usr/local/php-cgi/5.2/bin/php

Остальные версии:

/usr/local/php-cgi/5.3/bin/php
/usr/local/php-cgi/5.4/bin/php
/usr/local/php-cgi/5.5/bin/php
/usr/local/php-cgi/5.6/bin/php

В разделе «Crontab» задание должно выглядеть примерно так:

Как не нужно тестировать скорость и производительность хостинга?

Прежде всего, я хотел бы начать с того, как вы не должны проверять, является ли конкретный хостинг быстрым и эффективным. Это 4 распространенные ошибки при тестировании и сравнении хостингов, которые я чаще всего обнаруживаю в различных онлайн-тестах, рейтингах и сравнениях. На это стоит обратить внимание.

Как поменять атрибуты файлов и папок в unix?

С помощью любого SSH-клиента вы можете подключиться к файловой системе своего сервера и используя команду chmod выставить нужные атрибуты указанному файлу: «chmod 755 index.php«. Для большинства людей, малознакомых с работой с командной строкой, данный способ покажется, скорее всего, сложным.

Более лёгкий способ. Используйте для подключения к своему серверу любой FTP-клиент, например, FAR Manager (с его помощью и был сделан скриншот) или Total Commander. В таком случае вы будете перемещаться по файлам и папкам в более привычном и удобном интерфейсе.

Выставили атрибуты? Проверьте, заработало?:)

Уделим также внимание изменению атрибутов в Windows. Как ни удивительно, но подобные вопросы часто задаются.

Как правильно протестировать хостинг?

Чтобы начать проверку или тестирования что-либо, мы должны сначала точно знать, ЧТО мы хотим проверить, и, во-вторых, КАК мы хотим это проверить.

Я уже писал о том, что проверка скорости загрузки сайта — не лучшая идея для надежной проверки хостинга. И не имеет значения, делаем ли мы это с помощью секундомера на собственном компьютере или с помощью каких-то инструментов. Так как же сделать это правильно?

Прежде всего, нам нужно подготовить тестовую среду. Хотя некоторые тесты будут проводиться без каких-либо серьезных подготовительных действий (например, скорость диска или подключение к Интернету), в других случаях нам понадобится тестовый сайт.

Как его создать? Самым простым решением будет запустить тестовый блог или страницу на WordPress. Однако вот что важно:

Как проверить версию php

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 13 человек(а).

Количество просмотров этой статьи: 24 042.

Как узнать настройки php на сервере, где размещен мой аккаунт?

Узнать настройки PHP можно из Панели Управления Аккаунтом в разделе «Статистика». Перейдите в раздел «Информация о сервере» — на этой странице будут представлены все доступные версии PHP для данного сервера с возможностью просмотреть подробную информацию о каждой версии.

Как выбрать версию php при работе в командной строке (ssh)

При работе в консоли используйте следующие пути до обработчиков PHP для запуска скриптов под различными версиями:

Как сменить версию php

Чтобы сменить версию PHP, следуйте инструкции для вашей хостинг-панели:

Готово! Вы сменили версию PHP для домена.

Как установить php на хостинг

Поддержка PHP присутствует на всех тарифных планах Hosting Linux и Hosting Windows, кроме тарифов Host-Lite и Win-Lite. Если у вас один из этих тарифов, повысьте тарифный план, чтобы включить поддержку PHP.

Лирическое отступление об атрибутах файлов в unix-системах

В UNIX-системах в отличие от Windows любая папка и файл имеет 3 права и 3 уровня доступа. Права по отношению к файлу могут быть:

  • R — право на чтение
  • W — право на запись
  • X — право на выполнение

Права по отношению к папке могут быть:

  • R — право на чтение данных из папки
  • W — право на запись данных в папку
  • X — право на вход в папку

В то же время различаются три уровня доступа:

  • U — владелец файла/папки
  • G — член группы владельца
  • O — все остальные пользователи или программы

Атрибуты файла/папки принято записывать одним из двух способов. Первый способ состоит в перечислении установленных или сброшенных атрибутов для каждого из уровней доступа. Если право есть, указывается «r«, «w» и «x«, если права нет, указывается «—«.

Пример: Разрешаем пользователю читать и записывать файл, всем остальным только читать: «RW- R— R—«.

Второй способ заключается в приведении трёх битовых триад к записи в восьмеричной системе счисления. Просто запомните, если вы не программист, что:

  • R4, если установлен, и 0, если сброшен
  • W2, если установлен, и 0, если сброшен
  • X1, если установлен, и 0, если сброшен

Триада запишется, как сумма значений «R» «W» «X«. Три триады прав для уровней доступа запишутся, как последовательные три числа.

Пример: Разрешаем пользователю читать и записывать файл, всем остальным только читать: «RW- R— R—«. Этот же пример в цифровой записи будет выглядить, как 644.

Можно ли использовать на виртуальном хостинге php 5.3?

Да, это можно сделать из Панели Управления в разделе «Сайты», напротив нужного сайта необходимо нажать на кнопку с надписью «PHP», в появившемся окне выбрать необходимую для сайта версию PHP и нажать «Применить».

Не отправляется почта mail() с сервера

Если Вы пользуетесь услугами обычного хостинга, то данная функция должна поставляться хостером. Вам нужно задать вопрос в техподдержку.

Если это VPS сервер, и его администрированием занимаетесь Вы, лучше воспользоватся услугами профессиональных администраторов, для настройки sendmail. Это достаточно сложный процесс. Если хотите попробовать сами, то следует настроить exim, например. Статья по настройке — вот.

Как проверить?

Заходите в каталог /var/log ищете там файл mail, в нем содержатся ошибки, если sendmail настроен.

Ещё рекомендую посмотреть в файлу error.log, он обычно лежит в /var/log/apache/error.log. В этом файле, возможно, будут какие-либо ошибки.

Если есть доступ к файлу php.ini, посмотрите параметр sendmail_path, возможно его путь указан не верно. Путь к sendmail можно посмотреть командой which sendmail. Пример правильных параметров:

sendmail_path = /usr/sbin/sendmail -t -i -F"Full Name" -f'emailaddress@example.com'

Не работает header() на хостинге timeweb, на другом то же самое прекрасно уже много лет работает

Помогите, пожалуйста, кто знает, почему
header(«Location: http://events.altra-core.com/symposium/zagl.php«);
нет перехода на zagl.php
На другом хостинге все работает
Ниже код, я его совсем весь обкарнала, одно поле ввода и кнопка, по нажатию на которую идет переход на zagl.php

Вот ссылка где мучаюсь, кодировка utf без bom
http://events.altra-core.com/symposium/otl.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Altracore Symposium 2022</title>
<script>        
          function sndOrderForm(){           
            document.getElementById("seen").value='true';           
            document.forms.orderform.submit();
          }
</script> 
</head>
<body>
<?php
  if ($_POST['seen']=='true') {     
        header("Location: http://events.altra-core.com/symposium/zagl.php");
        exit();    // прерываем работу скрипта, чтобы забыл о прошлом
  } else {
  ?>

<!--БЛОК MAIN-->
<main class="">
    <!--РЕГИСТРАЦИЯ-->       
    <section id="reg" class="my-50">

          <form action="" method="post" id="order" name="orderform">
              <input type="hidden" name="seen" id="seen" value="true" />               
                    <fieldset>
                    <div class="form-row"> 

                         <div class="form-group col-md-4 m-auto py-1">
                            <input name="fname" type="text" class="form-control" placeholder="Фамилия*" maxlength="" value="" required>
                        </div>   
                          <div class="form-group col-md-12 pt-2 text-left">                 
                            <a class="btnOr3 text-center waves-effect"  role="button" href="#" title="Регистрация" onclick="sndOrderForm(); return false;">Регистрация</a>
                        </div>                          
                    </div> 
                    </fieldset>
             </form> 
<?php
}
?>                                      
    </section>
</main>
</body>
</html>

Не работает php скрипт отправки email, в чем может быть проблема?

1. Сначала нужно попытаться отправить «ручками» из коммандной строки. Если будет удача, то тогда уже разбираться с php. А для этого нужно знать, какая операционка, какой мэйлер, проверить много раз настройки и куча прочих косяков включая сетевые.

2. Есть подозрения, что рога именно с гуглем. Недавно тоже настраивал отправку из домашнего интранета — после безполезного секса с гуглем завел ящик на яндексе и начал отправлять через него. И было мне счастье. Яндекс более либерален. Есть правда одно «но»: адрес отправителя должен совпадать с реальным адресом аккаунта яндекса.

Не обрабатывается php в html

Если не обрабатывается PHP в файлах с расширением .html, воспользуйтесь инструкцией Как включить обработку PHP в HTML.

Немного теории

Для отправки писем необходим SMTP-сервер. Он есть на всех качественных платных хостингах. Для приема понадобится POP-сервер. Необходимо понимать, что php не отправляет сообщение, он передает команды приложению sendmail, которое и занимается отправкой.

Поэтому его нужно иметь. Если вы используете Денвер, то это приложение уже встроено. Все сообщения помещаются в директорию «tmp/!sendmail». Кстати, рекомендую вам, завести себе почту от Гугла. Это особенно актуально, если вы занимаетесь сайтостроением.

Отключена поддержка php в ispmanager

Если на вашей услуге хостинга установлена панель управления ISPmanager, убедитесь, что поддержка PHP включена.

Как включить поддержку PHP в ISPmanager:

Отправка с вложением

Рассмотрим пример, как отсылать сообщения с прикрепленным файлом. Для этого используется функция sendMailAttachment(). Рассмотрим, как это работает на примере:

Перенаправление заголовка php не работает

у меня на самом деле был случай, подобный этому, когда у меня была страница администратора, которая была включена в верхней части всех моих других страниц. В верхней части каждой страницы под строкой:

<?php include '../../admin.php' ?>

у меня была бы логика php:

<?php if($_SESSION['username'] === null){ header("Location: ./adminLogin.php");}?>

проблема с этим было то, что где-то еще я также позвонил/манипулирование header(.... После долгого времени, проходящего через мой код, я признаю, что не мог понять, в чем проблема. Тогда я подумал, что каждый из этих файлов попадает в мой admin.php файл, прежде чем делать что-либо еще. Поэтому я подумал о том, что произойдет, если я помещу логику, которая была в верхней части каждого из моих представлений (потому что я не хотел, чтобы что-либо было видно, если вы не вошли в систему) в my ?

случилось так, что, прежде чем он даже попал в любой из php / html в моих представлениях, он оценил, был ли кто-то зарегистрирован ($_SESSION['username'])) и если бы это было NULL затем я просто перенаправлен на страницу adminLogin. Я ставлю эту логику прямо перед моим переключателем. и он отлично работал для всех моих файлов, которые когда-то требовали логики. Как я работал в разработке, но создает много проблем в производстве. Я обнаружил, что перемещение логики перенаправления на my admin.php файл не только избежал дублирования header(... манипуляция, но на самом деле сделала мой код более эффективным, удалив лишнюю логику из моих файлов просмотра и в мой .

вместо того, чтобы помещать логику в каждый файл представления, поместите его в свой контроллер один раз, прежде чем переключатель. Работает как шарм! Это полезно, если вы не хотите, чтобы кто-либо получал доступ к конфиденциальным представлениям, если они не входят в систему. В моем случае это было важно для моей CMS. Однако, если есть некоторые файлы, которые вы хотите просмотреть без входа в систему, я думаю, что оригинальной логики будет достаточно. Похоже, вы уже нашли решение, но, надеюсь, это может быть полезно, если вы снова столкнетесь с этой ошибкой. 🙂

Проблемы с кодировкой

Иногда сообщения приходят в виде вопросов «?» или непонятных символов. От того насколько правильно оно будет перекодировано, зависит прочтет ли его получатель. При стандартных способах отправки php не учитывает кодировку. На эту тему на моем блоге уже была статья «UTF-8 и Windows 1251».

Сам контент сообщения может быть любой кодировки. Вся сложность заключается в заголовке From. По стандарту они должны быть в US-ASCII. Есть две формы кодирования —BASE64 и Quoted-Printable. Первая — более универсальная и работает с UTF-8, поэтому используете ее. Например,

При таком варианте заголовки могут быть нечитаемые. Чтобы решить данную проблему напишите заголовок в таком виде:

Важно! Используйте исключительно UTF-8.

Остались еще вопросы? Рекомендую вам ознакомиться с хорошим курсом Русакова  «Создание движка на PHP и MySQL 2.0». Изучив его вы не только разберетесь с веб-программированием, но и научитесь писать собственный движок сайта.

Проверка php. как проверить код? | otus

PHP — популярнейший скриптовый язык программирования общего назначения, который активно применяется при разработке web-приложений. Он поддерживается множеством хостинг-провайдеров и является одним из лидирующих языков, используемых в целях создания динамических web-сайтов. Иногда возникает необходимость выполнить проверку синтаксиса кода PHP. В статье будет рассмотрено, как это сделать.

Для проверки кода сегодня используют специальные онлайн-сервисы — валидаторы (validators). Они работают предельно просто: пользователю достаточно скопировать свой код в специальную форму и нажать кнопку «Проверить код» либо клавишу «Check». Также перед подтверждением проверки надо будет отметить галочкой нужную версию. Отдельные сервисы допускают возможность перетаскивания/загрузки файла с кодом.

Один из популярных сервисов для валидации — https://phpcodechecker.com/. Он даёт возможность легко и быстро найти синтаксическую ошибку в коде. Найденные проблемы будут выделены, плюс произойдёт автоматический переход на строку с ошибкой (вы сэкономите время поиска). Выделенная ошибка будет сопровождаться соответствующими комментариями.

Существуют ситуации, когда нужно выяснить, какая конкретно версия языка функционирует на вашем сервере. Если речь идёт о конкретном веб-сайте, используйте функцию phpinfo(). Необходимо поместить в корневой каталог файл phpinfo.php со следующим содержимым:

Далее достаточно будет открыть веб-браузер и перейти по адресу вашдомен/phpinfo.php. В результате версия PHP-сервера отобразится на экране.

1-1801-88acea.png

После того, как информация о версии будет получена, следует удалить файл из корневого каталога либо ограничить к нему доступ, т. к. предоставление конфигурации в общий доступ может нести угрозу информационной безопасности.

На этом всё. Как видите, проверить PHP код с точки зрения синтаксических ошибок можно легко и быстро, для чего существуют специальные инструменты — валидаторы. Не составит труда и узнать версию PHP в случае необходимости.

Узнайте, правилен ли ваш код! Проверяйте его на специальных онлайн-сервисах!

PHP_970x90-20219-10b307.jpg

Производительность php и mysql в wordpress

Последний способ — это установка и активация плагина WPPerformanceTester в WordPress, который будет проверять, как хостинг обрабатывает команды PHP и запросы к MySQL в контексте базы данных WordPress.

Мы загружаем плагин, устанавливаем и активируем его, а после активации переходим в меню Инструмент -> WP Performance Tester. После нажатия кнопки «Begin Performance Test» нам нужно подождать несколько секунд, прежде чем мы увидим результаты производительности тестируемого хостинга.

Первая часть (Server Performance Benchmarks) показывает время выполнения тестовых заданий (меньше = быстрее = лучше):

WPPerformanceTester результаты
WPPerformanceTester — Server Performance Benchmarks

Во второй части показаны результаты операций, обычно связанных с WordPress. Здесь значение Execution Time (Времени Выполнения) показывающее время выполнения задач, должно быть как можно меньше, а Queries Per Second (Количество Запросов в Секунду) — как можно больше:

WPPerformanceTester результаты
WpPerformanceTester – WordPress Performance Benchmark

Производительность php и баз данных mysql

Скрипт PHP Benchmark, в отличие от предыдущего теста, показывает как производительность размещенных PHP-скриптов, так и производительность базы данных MySQL. Так что если вы хотите протестировать оба параметра — используйте это решение.

Принцип действия аналогичен. Качаете отсюда архив скриптов и распаковываете его. Однако, перед тем как загрузить файл benchmark.php на сервер, вы открываете его в текстовом редакторе и вставляете необходимые значения для подключения к базе данных (сначала вы должны ее создать, например, через панель управления хостингом).

Настройки benchmark.php
Настройки MySQL в файле benchmark.php (до и после редактирования)

После заполнения данных вы сохраняете файл и размещаете его где-то на своем сайте, а затем вводите адрес, по которому расположен файл в своем браузере. В результате вы увидите что-то вроде этого:

Результаты benchmark.php
Результат теста PHP и MySQL в вашем браузере

Наиболее важными параметрами, на которые нужно обратить внимание, являются Calculation total в разделе Benchmark, которая оценивает скорость выполнения задач в PHP (меньше = быстрее = лучше), и Total в разделе MySQL, которая определяет скорость запросов к базе данных (меньше = быстрее = лучше).

Производительность php-скриптов

PHP benchmark Script тестирует производительность хостинга при выполнении математических операций с использованием языка PHP. Мы скачиваем с указанной страницы, распаковываем и загружаем файл bench.php на наш сервер в папку с сайтом (например, public_html).

Затем все, что нам нужно сделать, это запустить скрипт, ввести в браузере адрес, по которому находится файл, и получить результаты:

PHP benchmark Script
PHP benchmark Script — результат в браузере

Смотрим на «Total time», которое должно быть как можно меньше.

Смена атрибутов на windows-хостинге

В операционной системе Windows файлы и папки могут иметь следующие основные атрибуты:

  • R — Read only (только чтение)
  • A —Archive (архивный)
  • H — Hidden (скрытый)
  • S —System (системный)

Для справки упомянем о дополнительных свойствах файлов и папок, которые зависят от платформы операционной системы, в обзоре мы их рассматривать не будем. Compressed, Encrypted, Not indexed, Sparse, Temporary, Offline, Reparse point, Virtual.

Некоторые атрибуты, как уже писалось, зависят от версии операционной системы, некоторые от файловой системы жёсткого диска (или RAID-массива). Например, атрибут Compressed (сжат) присутствует в файловой системе NTFS, а в файловой системе FAT16/FAT32 его просто нет.

Самый простой способ изменения атрибутов файла на Windows-хостинге. Подключаемся к площадке с помощью FTP-клиента (Far Manager, Total Commander, Windows Commander или аналогичного). Выделяем интересующие файлы/папки (клавиша Insert или клик правой кнопкой мышки).

Тест 1: speedtest – скорость (пропускная способность) соединения хостинг-провайдера

С помощью известного инструмента Speedtest.net мы проверим скорость Интернет-соединения на нашем хостинговом аккаунте. Принцип прост: чем быстрее, тем лучше.

Но как это сделать? Для этого нам понадобится инструмент Speedtest в версии CLI (который запускается из командной строки).

Console
Speedtest.net CLI — скорость интернет-соединения

Конец. В результате мы получаем три значения:

  • Ping
  • Download (скорость загрузки данных извне на хостинг)
  • Upload (скорость отправки данных через внешний хостинг)

Важно понимать, что значения download/upload предоставляются для хостинга, а не для нас. Отсюда — скорость загрузки данных с хостинга нами или посетителями нашего сайта.

Результаты этого теста могут сильно отличаться даже при запуске нескольких тестов подряд. Наконец, на виртуальном хостинге мы обычно разделяем интернет-соединение с другими клиентами. Чтобы хорошо проверить хостинг, рекомендуется выполнить этот тест несколько раз и в разное время, чтобы можно было усреднить результаты.

Тест 2: производительность и скорость диска

Еще один тест, который стоит иметь в своем арсенале, это тест скорости диска. Мы будем использовать программу dd, которая по умолчанию должна быть установлена ​​на всех серверах под управлением Linux.

  1. Заходим на хостинг через SSH
  2. Запускаем тест с помощью команды:dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync

В результате через некоторое время мы должны получить время выполнения нашей команды (меньше = лучше) и скорость записи файлов на диск в MB/s (больше = лучше):

Console
Результат выполнения программы dd: скорость записи на диск

Это не идеальный тест и не проверяет все параметры производительности диска, но он доступен без каких-либо установок и позволит вам сравнить производительность диска на одном хостинге с другим.

Тест 3: скорость dns-серверов на хостинге

DNS — это адресная книга Интернета, задачей которой является преобразование доменных имен на IP-адреса серверов, на которых расположены эти сайты. DNS является неотъемлемым элементом каждого хостинга, и ввод адреса веб-сайта в браузер вызывает запрос к DNS-серверу.

DNS должен быть максимально быстрым, потому что чем он быстрее, тем быстрее загрузится сайт.

И хотя время запроса к DNS обычно измеряется в миллисекундах, стоит проверить, как с этим справляется наш хостинг. Поэтому мы будем использовать инструмент DNS Speed ​​Benchmark, который будет проверять время отклика DNS-серверов на нашем хостинге из разных мест.

Тест 4: производительность php и баз данных mysql

Для тестирования производительности хостинга в исполнении PHP-скриптов и поддержки баз данных MySQL, я предложу несколько инструментов (на выбор).

Тест 5: производительность хостинга под нагрузкой

Этот тест будет первым реальным испытанием, показывающим, как хостинг работает под нагрузкой. Тест производительности сервера будет осуществляться с помощью онлайн-инструмента Loader.io, который мы можем использовать бесплатно в ограниченном, но достаточном для простых тестов хостинга объеме.

Для этого теста нам понадобится некая тестовая страница для запуска на сервере. Лучшим решением будет WordPress, который использует как PHP, так и MySQL, поэтому мы протестируем всю хостинговую среду. О том, как подготовить такой тестовый сайт, я уже писал ранее в разделе «Как правильно протестировать хостинг?»

Как подготовить тест

  1. Регистрируемся на Loader.io и подтверждаем e-mail адрес
  2. Предоставляем домен (поддомен) тестируемого сайта

    Loader.io регистрация
    Loader.io: Подтверждение права собственности на сайт

Тест 6: тест скорости сайта

Последний тест хостинга, который я хотел бы предложить вам в этом руководстве, это тест с использованием инструментов для тестирования скорости, производительности и оптимизации веб-сайтов. Результаты теста часто не будут столь однозначными и точными, как в предыдущем тесте, но это довольно простой способ проверить производительность хостинга.

О каких инструментах идет речь?

  1. WebPageTest
  2. Pingdom Website Speed Test
  3. GTmetrix
  4. PageSpeed Insights

Однако, прежде чем приступить к тестированию скорости хостинга с помощью этих инструментов, обратите внимание на следующие важные моменты:

  1. При использовании этих инструментов очень важно, чтобы тестируемая страница на хостинге была точно такой же. Я написал об этом подробнее в разделе «Как правильно проверить хостинг?»
  2. Большинство из этих инструментов позволяют вам указать место, из которого выполняется тест. Попробуйте выбрать местоположение, наиболее близкое большинству посетителей вашего сайта, который вы собираетесь разместить хостинге. И затем при тестировании других хостингов, убедитесь, что они сделаны из того же места.
  3. Поскольку тесты проверяют время загрузки страницы в контрольной среде, а не время ответа на стороне сервера, важно, чтобы тесты с помощью этих инструментов выполнялись многократно. Результаты отдельных проверок на одной и той же странице могут сильно различаться.

Какие параметры нужно учитывать при выполнении тестов?

В WebPageTest, который по умолчанию выполняет сразу 3 теста скорости страницы, стоит обратить внимание в первую очередь на параметры First Byte и Speed Index, которые показаны в таблице на странице результатов:

WebPageTest результаты тестов
WebPageTest: Load Time и Speed Index

При проверке тестовой страницы с помощью инструмента Pingdom Website Speed ​​Test наиболее важным параметром является load time, то есть время, необходимое для загрузки страницы:

Pingdom результат теста
Pingdom Tool: Load time

В GTmetrix, где вы должны создать учетную запись, чтобы иметь возможность выполнять тесты из других мест, кроме Ванкувера, Канада, наиболее важным значением будет Fully Loaded Time:

GTmetrix результат теста
GTmetrix: Fully Loaded Time

Инструмент от Google, или PageSpeed ​​Insights, показывает много разных параметров, но в контексте стоит обратить внимание на два из них: индекс скорости и Initial server response time он же TTFB («Time To First Byte»), которые можно найти внизу в разделе «Успешные аудиты»:

PageSpeed ​​Insights результат теста
PageSpeed Insights: индекс скорости

Вот и все. Надеюсь, что благодаря этим тестам вы сможете воспользоваться 7, 14 или 30 дневным периодом, который хостинг-компании предлагают для бесплатных тестов или в качестве гарантии возврата денег. И я надеюсь, что благодаря этим тестам вы выберете лучший веб-хостинг для своего онлайн-бизнеса. Удачи!

Функция mail() не отправляет почту.

Вопрос такой, есть php-код отправки почты пользователю:

ну обычная такая отправка почты. И суть в том, что на локальном сервере (Denwer) все отправляется, и выдается сообщение

‘Мы отправили вам письмо для подтверждения регистрации!’

. То есть функция mail() возвращает значение

true

. Проверяю этот же код на реальном хостинге и выдается сообщение

‘Отправка почты не получилась!’

. Соответственно mail() выдает

false

. Попытался пообщаться с техподдержкой хостинга, они сказали, что у них все должно работать, функция mail() не запрещена и

sendmail

настроен верно. В чем может быть проблема?

§

Вопрос такой, есть php-код отправки почты пользователю:

ну обычная такая отправка почты. И суть в том, что на локальном сервере (Denwer) все отправляется, и выдается сообщение

‘Мы отправили вам письмо для подтверждения регистрации!’

. То есть функция mail() возвращает значение

true

. Проверяю этот же код на реальном хостинге и выдается сообщение

‘Отправка почты не получилась!’

. Соответственно mail() выдает

false

. Попытался пообщаться с техподдержкой хостинга, они сказали, что у них все должно работать, функция mail() не запрещена и

sendmail

настроен верно. В чем может быть проблема?

Оцените статью
Хостинги