Tesla
@Tesla

Почему realpath кэш не работает?

Разбирался с производительностью приложения и обнаружил, что кэш realpath всегда пустой. Так и не смог заставить его работать

realpath_cache_get(); // array(0) {}

ini_get('open_basedir'); // bool(false)
ini_get('realpath_cache_size '); // string(5) "2048k"
ini_get('realpath_cache_ttl '); // string(3) "120"


php -v
PHP 5.6.25 (cli) (built: Aug 31 2016 19:17:57)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies


Единственное, что иногда мелькает в realpath_cache_get() — '/etc/php.d/opcache-default.blacklist'
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
Tesla
@Tesla Автор вопроса
Оказалось, что если в httpd.conf хотя бы для одного домена указан open_basedir, то realpath кэш не будет работать вообще ни для одного домена.

В итоге для себя решил проблему с помощью php-расширения turbo_realpath.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Сталкивался с подобным. Помог мануал, а там написано:

Note: The running script must have executable permissions on all directories in the hierarchy, otherwise realpath() will return FALSE.


Замечание: Запускаемый скрипт должен иметь права запуска на всех директориях в проверяемой иерархии, иначе realpath() вернет FALSE.


У php есть права на все папки выше скрипта которым проверяете?
Ответ написан
Ваш ответ на вопрос

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

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