На что указывает «./» в каталоге расширений php.ini?

#php

#php

Вопрос:

Я не хочу выглядеть новичком, но это действительно раздражает меня. Вы знаете, где находится

; Каталог, в котором находятся загружаемые расширения (модули).
extension_dir = "./"

указывает на?

Ответ №1:

./ указывает на текущий каталог.

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

Я не нашел никакого определения текущего каталога при разборе php.ini файла, в этом сообщении предполагается, что это относительно php.ini расположения файлов.

Комментарии:

1. Спасибо, Андерс, я вроде как подумал об этом, но я не знаю, является ли это текущим каталогом php.ini, или это текущий каталог чего-то другого, возможно, файла php engine (я не знаю, это термин) или (скорее всего, нет) apache … : S

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

3. Эй, Андерс, я не знаю, хорошая это практика или нет, но поскольку изменение строки «ext = /.» на что-то другое нарушало работу других расширений (которые я нигде не мог найти). В итоге я использовал структуру каталогов с расширением =/my/directory /structure/extension. итак, и это сработало. Спасибо за вашу помощь! 🙂

Ответ №2:

Просто добавляю для будущих поисков

Запуск phpinfo на cli (php -a<enter>phpinfo();<enter>) дал мне это среди выходных данных.

 extension_dir => /usr/lib/php/20131226 => /usr/lib/php/20131226
  

Комментарии:

1. Для упрощения использования попробуйте это: php -r 'phpinfo();' | grep extension_dir

2. Найти каталог — это одно, но понять, почему он использует именно его, для меня все еще немного загадочно (значение в php.ini закомментировано по умолчанию). Мой файл находится в /etc/lib64/php/modules/ , что, очевидно, является особенностью 64-разрядной архитектуры.

3. @cartbeforehorse Ознакомьтесь с нижней частью моего ответа и посмотрите, отвечает ли это на ваш вопрос.

Ответ №3:

Похоже, что «текущий каталог» — это, насколько это касается PHP, любой каталог, который печатает «pwd».

Самый простой способ увидеть это — запустить php -r 'echo getcwd();'

Я также могу определить это, набрав zend_extension="xdebug.so" внутри моего php.ini . Далее я создаю две папки в любом месте: одну пустую, а в другую копирую свой xdebug.итак, в. Когда я открываю терминал внутри моей пустой папки и запускаю php , он выдает предупреждение о невозможности найти xdebug.so . Напротив, если я открываю терминал в папке с расширением и запускаю php в командной строке, предупреждений нет.

Я не смог определить, куда это отображается при запуске php через apache. Я попробовал корень документа, HTTPD_ROOT, /usr/bin. Ничего. Я делаю это примечание на случай, если кто-то, кто знает больше об apache, сможет пролить некоторый свет на это.

Что касается расположения extension_dir по умолчанию. Который скомпилирован в. Вы можете найти значение для вашего extension_dir, найдя файл, build-defs.h. он определен в макросе PHP_EXTENSION_DIR build-defs.h создается файлом шаблона на этапе настройки компиляции.