Прекратить кеширование для PHP 5.5.3 в MAMP


123

Установлен MAMP на новый Macbook с PHP 5.5.3.

Перезагрузка и обновление ничего не делают. Еще ничего. Погуглите несколько минут, пытаясь выяснить, что не так, вернитесь и обновитесь. Оно работает. Какого черта?

Я зашел в php.ini и отключил все новые OPcache и установил время кеширования по умолчанию на 0. Добавил заголовки в документ, чтобы принудительно не кэшировать. Все еще та же проблема. Что, черт возьми, здесь происходит?

На вкладке сети отображается запрос HTTP 200, поэтому любой новый HTML-код в index.phpфайле отображается нормально, но новый PHP, который должен отображаться сервером, откладывается и не отображается до тех пор, пока не пройдет определенный заранее установленный набор времени, что я не знаю, как изменить. В чем дело?

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

Интересный факт, однако, если я перейду в MAMP и изменю версию PHP на старую (PHP 5.2 или что-то еще), она будет отображаться нормально, без «проблем с кешированием». Переключитесь на PHP 5.5, и он зависнет. В настройках MAMP параметры кеширования для 5.5 даже не существуют и автоматически отключаются.


4
Я знаю, что это не решение вашей проблемы, но я лично не большой поклонник MAMP, так как, особенно когда установить собственный стек, это так просто - вот довольно быстрое руководство по установке стека с помощью homebrew: github .com / josegonzalez / homebrew-php
mewm

@mewm Я не понимал, что это может быть так просто. Ура! Использовал это, чтобы начать работу с nginx всего за несколько нажатий клавиш. Learnaholic.me/2012/10/10/…
willdanceforfun

Ответы:


207

Отключить OPCache

MAMP теперь включает OPCache по умолчанию, вы можете отключить его, отредактировав файл php.ini. Убедитесь, что вы редактируете правильный php.ini.

Я сам столкнулся с той же проблемой. MAMP с версией PHP 5.5.3 по умолчанию запускает OPcache, но вы не можете отключить его в графическом интерфейсе, как в более старой версии PHP 5.2.17. Вы должны вручную закомментировать все строки OPcache в конце файла php.ini (MAMP / bin / php / [версия] /conf/php.ini) и обязательно остановить и запустить серверы, чтобы изменения вступили в силу. эффект.

Я обновил URI, изменения могут быть отражающими, если также изменить / conf / в папке php, но похоже, что MAMP проигнорирует их после перезапуска .


4
У меня была такая же проблема, и я исправил ее, закомментировав строки opcache. Это своего рода недоумение, что вам нужно зайти в файл php.ini, чтобы это изменить. На самом деле это вводит в заблуждение, поскольку может показаться, что у вас есть все параметры кеширования, указанные в раскрывающемся списке MAMP-> Preferences.
JaredH 05

17
Мне интересно, какую часть тела использовали создатели MAMP, чтобы думать, добавляя эту «классную функцию».
Сергей

Я думал, что что-то не так с моей установкой ModX, но нет, похоже, ваш ответ исправил это. Спасибо. Кроме того, я вернулся к более старой версии. Теперь он работает намного лучше.
vr_driver

67
Обратите внимание, что php.iniфайл, который вы хотите отредактировать, находится в / bin, а не в / conf. Мой полный путь был /Applications/MAMP/bin/php/php5.5.3/conf/php.ini.
Husky

Я отправил отчет об ошибке, надеюсь, они отключат его по умолчанию в будущей версии: bugs.mamp.info/view.php?id=4296
Husky

38

Я добавил opcache_reset (); в моем основном PHP, чтобы остановить это кеширование.

Удаление этого php5.5.3/conf/php.iniничего не сделало для меня.

редактировать

Оказывается, там тоже есть файл /Applications/MAMP/bin/php/php5.5.3/conf/php.ini. Это работает, если я прокомментирую это там.


1
Комментирование OPcache в каталоге / bin сработало для меня! Спасибо за это!
daveaspinall 05

Комментируя OPcache в php.ini в /Applications/MAMP/bin/php/php5.5.3/conf/php.iniничего не делает, но добавление opcache_reset();к index.phpработало.
Даниил Пронин

26

1) в /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
2) установите opcache.revalidate_freq = 0
3) перезапустите MAMP


2
Кажется, это работает. Мне больше понравилось реализовывать это решение, чем все это комментировать. Но есть ли разница?
Кетри

10

Мне потребовалось много времени, чтобы понять, что это проблема с MAMP! Почему OPcache должен быть включен по умолчанию - и для его отключения требуется настройка php.ini - в приложении, которое предполагается использовать для тестирования веб-сайтов? В любом случае, я прочитал всю эту ветку и попробовал различные решения.

Вот мои заметки о том, как работает каждое решение, и соображения по выбору решения.

Каждое решение работает само по себе; нет необходимости в резервировании.


Решение для кода веб-страницы

opcache_reset ();

<?php opcache_reset(); ?>
  • Должен быть добавлен в код веб-страницы.
  • Принудительно перезагружает все скрипты.
  • Работает без перезапуска сервера MAMP.

Решения по настройке сервера

Важно: используйте php.iniфайл в формате, /Applications/MAMP/bin/php/php5.5.3/conf/php.iniа не в формате /Applications/MAMP/conf/php5.5.3/php.ini. Отрегулируйте соответственно, если вы используете другую версию PHP.

включить = 0

[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
enable=0
  • Должен быть добавлен под [OPcache]в php.ini.
  • Отключает OPcache.
  • Требуется перезапуск сервера MAMP.

opcache.revalidate_freq = 0

[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=0
opcache.fast_shutdown=1
opcache.enable_cli=1
  • Изменение в opcache.revalidate_freqсоответствии [OPcache]с php.ini.
  • Заставляет OPcache проверять наличие обновлений каждые 0 секунд, а не каждые 60 секунд.
  • Требуется перезапуск сервера MAMP.

Комментирование [OPcache]

;[OPcache]
;zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
;opcache.memory_consumption=128
;opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=4000
;opcache.revalidate_freq=60
;opcache.fast_shutdown=1
;opcache.enable_cli=1
  • Закомментируйте весь [OPcache]раздел в php.ini.
  • Удаляет OPcache с сервера PHP.
  • Требуется перезапуск сервера MAMP.

Соображения

Выберите код веб-страницы, если:

  • Вам просто нужно принудительно обновить скрипт для конкретного проекта.
  • Вы не хотите перезапускать сервер MAMP
  • Вы не хотите редактировать php.ini

Выберите вариант конфигурации сервера, если:

  • Вы хотите отключить кеширование по умолчанию, вместо того, чтобы делать это в каждом проекте.
  • Вам удобно редактировать php.ini

Я лично предпочитаю, enable=0так как это самое простое решение для меня, и мне нужно, чтобы кеширование было отключено по умолчанию.


Ссылки


4

MAMP 3.0.7.2 для OS X

Похоже, это наконец вариант с графическим интерфейсом. MAMP 3.0.7.2 for Mac OS X,


Очевидно, это не отключает OPCache. Моя все еще была активна даже с этой настройкой "выключено".
auco

2

Было болезненно потратить около часа, пытаясь понять, что это могло быть.

Я просто добавил это в конец кода и перезапустил MAMP.

  opcache.revalidate_freq=0
  opcache_reset();

2

Отредактируйте "/Applications/MAMP/conf/php5.5.3/php.ini", найдите [OPcache] и добавьте этот код непосредственно под ним:

opcache.enable=0

Это отключит opcache при использовании PHP на сервере MAMP.


Работал на моем сервере Ubuntu. Спасибо.
Sinan Eldem

2

О боже, я рад, что нашел эту ветку! Я выдергивал волосы! Я только что обновил MAMP вчера и не заметил этой проблемы с кешированием до сегодняшнего дня, работая над проектом. Думал, что схожу с ума. Я только что изменил "/Applications/MAMP/conf/php5.5.3/php.ini" в самом низу файла opcache.enable = 0


1

Это также актуально в версии MAMP для Windows.

C: \ MAMP \ конф \ php5.6.3 \ php.ini

Он указан в самом низу файла.

Другая проблема, которую я обнаружил, была на QNAP NAS TS-431. Это кеширование также включено, и если вы работаете с динамически изменяющимися файлами или пытаетесь развить их, вы будете рвать на себе волосы. Что касается других комментариев, просто прокомментируйте это. Настройка находится в:

Панель управления / Приложения / Веб-сервер / Обслуживание PHP.ini.

И снова вы найдете настройки внизу файла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.