#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 создается файлом шаблона на этапе настройки компиляции.