Windows 2019 и PHP 7.3: "session_start (): ps_files_cleanup_dir: opendir не удалось: нет такого файла или каталога (2)" - PullRequest
2 голосов
/ 11 февраля 2020

Наличие этой проблемы. Я знаю, что есть похожие вопросы, но ни один из них не дал решения.

  • Windows Серверное ядро ​​сервера 2019
  • PHP 7.3.7 x64 под IIS.

Сообщение об ошибке:

PHP Неустранимая ошибка: Uncaught ErrorException: session_start (): ps_files_cleanup_dir: opendir (D: \ Temp PHP) не удалось: нет такого файла или каталога (2).

  • Каталог существует и полон файлов сессий.
  • Полные разрешения (я знаю, угроза безопасности, но я первый пытаясь заставить его работать) для пользователя пула приложений (IIS AppPool ...), IUSR, IIS_IUSRS, LOCAL SERVICE, LOCAL NETWORK, SYSTEM и CREATE OWNER.
  • Кажется, что сообщение об ошибке отображается случайным образом.

Некоторые соответствующие настройки php .ini:

session.gc_probability = 1
error_log = "D:\TempPHP\PHP73x64_errors.log"
upload_tmp_dir = "D:\TempPHP\upload"
session.save_path = "D:\TempPHP"
sys_temp_dir = "D:\TempPHP"

edit: "D: \" - это локальный раздел. Не подключенный или общий диск. Журналы и сеансы пишутся успешно. Кажется, php просто не может удалить эти файлы.

1 Ответ

0 голосов
/ 18 февраля 2020

Хорошо, обнаружил проблему.

Похоже, что с windows сессия session.ave_path не может находиться на диске / разделе, отличном от пути исполняемого файла PHP. В моем случае каталог PHP был c: \ Program Files \ PHP \ v7.3, поэтому я переместил папку Temp PHP из раздела D: в C: и изменил значение session.save_path из " D: \ Temp PHP "до" C: \ Temp PHP ". Теперь файлы sess_xxxxx автоматически очищаются, и сообщений об ошибках больше нет.

Не знаю, верно ли это для других php или windows версий.

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