Есть много причин для этого, вот несколько из них:
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 ().