Множество вопросов - позвольте мне попытаться ответить на каждый из них по одному.
Найти грушу
Груша должна быть включена по умолчанию - что объясняет, что вы не видите этого встрока конфигурации.
Другим тестом является проверка значения include_path
- /usr/local/pear
, /usr/share/php
, эти значения (= место установки PEAR) зависят от ОС.Вы можете увидеть это через phpinfo()
или:
<?php
var_dump(ini_get('include_path'));
// or
var_dump(get_include_path());
Чтобы наконец проверить, установлен ли PEAR, попробуйте следующий код:
<?php
require_once 'PEAR.php';
Нет ошибок?Это означает, что PEAR установлен и правильно настроен (в вашем include_path
).
A local PEAR tree
Если PEAR не установлен или установлен, и вы неУ вас нет прав на запись в это местоположение (или ваш администратор не может установить пакеты PEAR для вас), лучше всего:
- установить PEAR и все необходимые пакеты на вашей локальной рабочей станции
- скопировать все грушевое дерево с вашей рабочей станции на сервер
- настроить
include_path
в вашем скрипте
Настройка include_path
- Допустим, насервер вашего каталога: /var/example.org/public
- Загрузить все дерево PEAR (из локального) в: /var/example.org/public/pear
Добавьте в свой сценарий следующее:
Важно, чтобы ваш новый «путь» был первым - предопределение означает, что сначала выполняется поиск библиотек.Например, если ваша версия PEAR более свежая, чем та, что уже есть на вашем сервере, она будет использовать ее.Меньше побочных эффектов.
Расширения PHP
В большинстве случаев вы не можете установить расширения pecl на сервер без доступа.Вы можете попытаться предварительно скомпилировать расширение на виртуальной машине (с той же ОС), а затем загрузить файл .so
и использовать dl()
для его загрузки во время выполнения, но это, вероятно, не будет работать в большинстве ситуаций.
Fin
Надеюсь, это имеет смысл.
Обновлено: include_path primer
Представьте себе этот фрагмент кода:
<?php
require 'PEAR.php';
Это сделает поиск PHP, это include_path
для определения местоположения PEAR.php.
Типичный путь выглядит следующим образом:
.:/usr/share/php
Это означает, что include_path
содержит два каталогов в настоящее время (:
является разделителем):
- текущий путь:
.
- путь
/usr/share/php
Порядок этих путей имеет решающее значение для PHP:
- , если
PEAR.php
(из нашего примера) найдено в текущем каталоге, сначала оно включается - , если
PEAR.php
только в/usr/share/php
, PHP все равно будет сначала искать текущий каталог
Обычно include_path
устанавливается в php.ini
или во время выполнения (когда скриптвыполняется), используя set_include_path(...)
или ini_set('include_path', ...)
.Чтобы получить текущее значение пути включения, вы также можете использовать get_include_path()
или ini_get('include_path')
.
Чтобы избежать поиска PHP в include_path
, вы можете использовать следующее:
<?php
require '/usr/share/php/PEAR.php'
Абсолютный путь не дает PHP использовать include_path
.Но поскольку расположение PEAR не стандартизировано в различных дистрибутивах Linux, Unix, MacOSX или Windows, делать это не рекомендуется.
HTH