Зупиніть кешування PHP 5.5.3 в MAMP


123

Встановлено MAMP на новому Macbook з PHP 5.5.3.

Перезавантаження та оновлення нічого не роблять. Ще нічого. Google кілька хвилин намагається з’ясувати, що не так, поверніться та оновіть. Це працює. Якого біса?

Я зайшов у 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 всього за кілька натискань клавіш. learnnaholic.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
У мене була та сама проблема, і я її вирішив, коментуючи рядки, що склалися. Це дивним чином, що вам потрібно зайти у файл php.ini, щоб змінити це. Це насправді досить оманливо, оскільки, здається, у вас є всі параметри кешування, наведені у спадному вікні MAMP-> Налаштування.
JaredH

17
Мені цікаво, яку частину їхнього тіла творці MAMP використовували, щоб думати, додаючи цю "класну функцію".
Сергій

Я думав, що з моїм встановленням ModX щось не так, але ні, ваша відповідь, схоже, виправила це. Дякую. Крім того, я також повернувся до старішої версії. Зараз це працює набагато краще.
vr_driver

67
Зауважте, що php.iniфайл, який ви хочете відредагувати, знаходиться в / bin, а не в / conf. Мій повний шлях був /Applications/MAMP/bin/php/php5.5.3/conf/php.ini.
Хаскі

Я подав звіт про помилку, сподіваюся, вони відключать його за замовчуванням у наступній версії: 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

Коментувати 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.

enable = 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 для ОС X

Схоже, це нарешті варіант GUI. MAMP 3.0.7.2 for Mac OS X.


Це, очевидно, не відключає OPCache. Шахта все ще була активною, навіть якщо цей параметр "вимкнено".
auco

2

Було болісно витрачати близько 1 години, намагаючись зрозуміти, що це може бути.

Я щойно додав це в кінці коду і перезапустив MAMP.

  opcache.revalidate_freq=0
  opcache_reset();

2

Відредагуйте "/Applications/MAMP/conf/php5.5.3/php.ini" та знайдіть [OPcache] та додайте цей код під нього безпосередньо:

opcache.enable=0

Це дозволить вимкнути опкаш при використанні PHP на сервері MAMP.


Працював на моєму сервері ubuntu. Дякую.
Сінан Елдем

2

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


1

Це також актуально і для Windows версії MAMP.

C: \ MAMP \ conf \ php5.6.3 \ php.ini

Він перерахований у самому дні файлу.

Інша проблема, яку я знайшов, була в QNAP NAS TS-431. Це кешування також увімкнено, і якщо ви працюєте з динамічно змінюючими файлами або намагаєтеся розвивати їх, ви зірвете волосся. Що стосується інших коментарів, просто прокоментуйте це. Параметр розташований у:

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

Ще раз ви знайдете налаштування внизу файлу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.