Назад | Перейти на главную страницу

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

Я вижу подобные ошибки в журнале ошибок Apache сразу после развертывания, и есть ошибки HTTP 500:

Неустранимая ошибка PHP: Uncaught RuntimeException: не удалось записать файл кеша "/var/www/html/app/tmp/twig_cache/6d/6d9137e2293cd0c967ee8ce214a07535e605a8a487340c1fcebb231ae2ef9317.php".

/var/www/html/app символическая ссылка на /var/www/app/4.0.0 (снаружи, если корень документа). Сейчас я готовлю новую версию в каталоге и запускаю эту команду в html каталог для запуска:

ln --symbolic --directory --force --no-target-directory ../app/4.1.0 app

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

Решением было бы перезапустить сервер Apache через systemctl restart httpd но перезапуск systemd может занять почти полторы минуты, что проблематично в рабочее время. Apache очень быстро перезагружается в среде QA, поэтому я снова предполагаю, что задержка вызвана ожиданием завершения открытых соединений.

Может ли кто-нибудь предложить лучший способ развернуть приложение, чтобы избежать этой проблемы?

Решением было бы перезапустить сервер Apache

Если это исправит описанную вами ошибку, то есть что-то очень не так с операционной системой.

Не удалось написать ...

Подразумевает

  • проблема с разрешениями
  • проблема блокировки
  • отсутствующий каталог

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

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

Конечно, использование символических ссылок влияет на производительность и емкость. Пока вы сказали Apache следовать символическим ссылкам, это не повлияет на производительность.