session_start вызывает внутренние ошибки сервера - PullRequest
0 голосов
/ 17 января 2012

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

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

Итак, я создал скрипт, который содержит ТОЛЬКО это:

ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();

И, конечно же, если я запустил его, я получаю внутреннюю ошибку сервера и ничего в error_logs.

Мой вопрос: что может быть причиной этого? Разрешения на папку сеанса? Мы на виртуальном хостинге, поэтому мы ничего не можем изменить на стороне сервера.

Могу ли я сказать что-нибудь специалисту IWeb, который убедит их решить проблему?

Ответы [ 4 ]

2 голосов
/ 17 января 2012

вы можете получить путь сеанса с помощью функции

$sessionpath = session_save_path();

затем вы можете отобразить разрешения, установленные для пути

echo substr(sprintf('%o', fileperms($sessionpath)), -4);

обычно, если это проблема с разрешениями, вы получите сообщение об отказе в доступе при вызове начала сеанса.

0 голосов
/ 01 апреля 2014

Если вы получаете внутреннюю ошибку сервера при использовании PHP session_start (), проверьте, сколько файлов находится в папке, настроенной как session.save_path.Вот краткий сценарий:

set_time_limit(0);
ini_set("memory_limit","256M");

$directory = session_save_path();
$filecount = count(glob($directory . "/*"));

echo $directory." file count = ".$filecount;

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

ini_set('session.save_path', dirname(__FILE__) . '/../session');
0 голосов
/ 25 января 2012

Итак, в конце концов, это действительно был хост-провайдер.Я открыл билет с ними, и они исправили это "в конце концов".

С моей стороны ничего не изменилось, так что это была проблема с сервером.У меня нет сведений о том, что было исправлено, но я почти уверен, что это как-то связано с разрешениями для папки / tmp.

0 голосов
/ 17 января 2012

Хост-провайдер IWeb не является хорошим хостом.Это проблема со стороны сервера, и пришло время найти новый веб-хостинг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...