Установка расширений PHP на виртуальном хостинге - PullRequest
7 голосов
/ 29 декабря 2008

Мне нужно включить функции mcrypt на моем веб-сайте, за исключением того, что я на общем хосте (под управлением Linux) и, очевидно, не имею доступа к файлу php.ini. Кажется, есть варианты установки модулей PEAR, но поиск показал, что mcrypt недоступен. Могу ли я это сделать, кроме как попросить технической поддержки, чтобы помочь мне?


Обновление: оглянувшись немного поподробнее, похоже, я мог бы использовать функцию dl() для динамической загрузки библиотеки во время выполнения. Так как я использую только функции mcrypt в одном месте, я, вероятно, мог бы сойти с рук, поскольку снижение производительности (я полагаю, что оно есть) должно быть минимальным. Единственная проблема сейчас - как получить файл libmcrypt.so?


Еще одно обновление: я скачал файл libmcrypt.tar.bz2 из Sourceforge и запустил ./configure, make, а затем скопировал файл libmcrypt.so.4.4.8 в мой домашний каталог (как libmcrypt.so), но сейчас Я не могу найти, куда его поместить, чтобы функция dl() нашла его.

Ответы [ 4 ]

3 голосов
/ 29 декабря 2008

На странице MCrypt Sourceforge это должно быть http://mcrypt.sourceforge.net/
Чтобы скомпилировать это просто:

wget http://superb-east.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
tar -xzvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make
sudo make install

EDIT: Можете ли вы сослаться на него прямым путем?
Что вы пробовали?

Edit2: кажется, что вы можете загружать только модуляции из каталога расширений, установленного в php.ini, и вы не можете переопределить extensions_dir с помощью ini_set, поэтому вам придется либо убедить свой хост установить его, либо если они позволят вам собственный php.ini (многие обычно делают это в [username] /php.ini), тогда вы можете установить туда extensions_dir и загрузить модуль с этим.

2 голосов
/ 29 декабря 2008

Действительно лучший способ - попросить вашего интернет-провайдера включить поддержку mcrypt. Даже если вы соберете свое собственное расширение PHP и загрузите его с помощью dl (), нет гарантии, что оно будет работать после обновления PHP, поскольку PHP иногда очень требователен к номеру версии.

0 голосов
/ 01 октября 2009

PHP в версиях до 5.2.5 позволял вам использовать путь в функции dl (), чтобы вы могли легко загружать библиотеки в общей среде.

Это изменилось по соображениям «безопасности» в 5.2.5, и, насколько мне известно, единственный вариант - заставить вашего системного администратора добавить модуль в каталог extensions_dir.

Эта проблема описана в bugs.PHP.net

0 голосов
/ 29 декабря 2008

dl() вам тоже не поможет, поскольку он загружает библиотеки только с определенных путей, и эти пути обычно доступны для записи только системным администраторам из соображений безопасности.

Я очень сомневаюсь, что есть способ использовать бинарные библиотеки без согласия хостера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...