Я вызываю session_start () скрипт зависает и ничего не происходит - PullRequest
2 голосов
/ 25 мая 2010

Я запускаю php5, однако, как только я вызываю session_start () скрипт зависает и ничего не происходит. Кто-нибудь еще испытывает эту проблему, или я что-то делаю неправильно?

Я использую session_start () для index.php и по какой-то причине иногда это не удастся. Никаких предупреждений, ошибок, уведомлений, даже после предваряющий error_reporting (E_ALL) и ini_set ('display_errors', TRUE) перед session_start () я что-то вижу, просто умирает.

1 Ответ

3 голосов
/ 25 мая 2010

Есть много причин для этого, вот несколько из них:

A. Файл сеанса может быть открыт исключительно. Когда блокировка файла не снимается должным образом по какой-либо причине, это заставляет session_start () бесконечно зависать при любых будущих выполнениях скрипта. Обходной путь: используйте session_set_save_handler () и убедитесь, что функция записи использует fopen ($ file, 'w') вместо fopen ($ file, 'x')

B. Никогда не используйте следующее в вашем файле php.ini (файл энтропии в "/ dev / random"), это приведет к зависанию вашего session_start ():

<?php
ini_set("session.entropy_file", "/dev/random");
ini_set("session.entropy_length", "512");
?>

C. session_start () нужен каталог для записи.

Вы можете запустить Apache плюс PHP под учетной записью обычного пользователя. Тогда Apache, конечно, должен будет прослушивать порт, отличный от 80 (например, 8080).

Обязательно выполните следующие действия: - создать временный каталог PREFIX / tmp - поместите php.ini в PREFIX / lib - отредактируйте php.ini и установите session.save_path в каталог, который вы только что создали

В противном случае ваши скрипты будут зависать на session_start ().

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