Задать вопрос
@midia21

Почему PHP кэширует содержимое скрипта при запуске из sudo?

Есть скрипт test.php:
var_dump(123);
php test.php - 123
sudo php test.php - 123

Changes are coming:
var_dump(1234);
php test.php - 1234
sudo php test.php - 123 (возвращает старый результат)

Не знаете из-за чего может быть такое поведение. Пробовал уже все чистить: hash в bash, opcache, acl но безрезультатно :(

Заранее спасибо.
  • Вопрос задан
  • 147 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@midia21 Автор вопроса
Разобрался :) Вобщем opcache всему виновник.
Конфигурация:

; configuration for php opcache module
; priority=10
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=8
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=65407
opcache.validate_timestamps=0
opcache.save_comments=1
opcache.enable_cli=1
opcache.file_cache_only=1
opcache.file_cache_consistency_checks=1
opcache.file_cache=/home/vagrant/.project/runtime/tmp/php_file_cache
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@rPman
linux запущен из wsl windows?
что то похожее (точнее там была разница значений внутри linux контейнера из windows было странно разное)

для linux это однозначно неправильное поведение, на дефолтном окружении такого поведения не возникает, вспоминай что такое делал с linux что оно так стало вести.

p.s. консольный php работает без кеширования
Ответ написан
@Vitsliputsli
У вас включен файловый кеш (в том числе для cli), но отключена проверка валидности кеша (validate_timestamps). Поэтому пока вы вручную не сбросите кеш, он будет продолжать работать.
Что касается sudo, при первом запуске скрипта, вы сделали это через sudo, был создан файл кеша от root, с правами запрещающими чтение другими пользователями. При запуске без sudo php не может его прочитать и записать (хрен его знает, почему он не кидает ошибку), в итоге sudo php работает с файловым кешем, а php от пользователя нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы