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

279
10 декабря 2016, 10:16

Обнаружил, что realpath_cache_get() всегда пустой, начал разбираться и выяснил, что в режиме cli все работает отлично, а вот при запросе из веб получаю пустой массив.

Из скрипта: <?php realpath(null); var_dump(realpath_cache_get()); // array(0) {}

Из консоли: php -r 'realpath(null); var_dump(realpath_cache_get());' // array(5) {...}

Сравнить полностью phpinfo() из веб и cli трудно из-за разных форматов, но основное одинаково:

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

Версия php на сервере только одна:

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, а в основном, массив пустой.

Answer 1

Оказалось, что если в httpd.conf хотя бы для одного домена указан open_basedir, то realpath кэш не будет работать вообще ни для одного домена. Из cli, разумеется, httpd.conf не обрабатывается.

В итоге для себя решил проблему с помощью php-расширения turbo_realpath.

READ ALSO
Как очистить строку?

Как очистить строку?

Парсю данные, и на выходе получаются вот такие строки

238
PHP удаление текста

PHP удаление текста

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

234
Условие IF выполняется не верно [закрыто]

Условие IF выполняется не верно [закрыто]

вообщем условие if работает но не так, получается по условию я хотел осуществить если переменная равна одному из значений массива то выполнять...

288
Что такое package apache22-2.2.27?

Что такое package apache22-2.2.27?

Добрый день!

294