在共享主机上安装PHP扩展

问题描述:

我需要在我的网站上启用mcrypt功能,除了我在共享主机上(运行linux),并且显然无法访问php.ini文件。似乎有安装PEAR模块的选项,但搜索告诉我mcrypt不可用。有什么办法可以做到这一点,而不是乞求技术支持来帮助我?在共享主机上安装PHP扩展


更新:环顾四周多一点,它看起来像我可能能够使用dl()功能在运行时动态加载库。由于我只在一个地方使用mcrypt函数,因此可能会因为性能受到影响而离开(我假设有一个命中)应该是最小的。现在唯一的问题是如何获得libmcrypt.so文件?


另一个更新:我已经从Sourceforge下载libmcrypt.tar.bz2文件并运行./configuremake,然后复制libmcrypt.so.4.4.8文件到我的主目录(如libmcrypt.so),但现在我不能找到把它放在哪里,以便dl()函数可以找到它。

的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 

编辑: 你能有一个直接的路径引用呢?
你有什么尝试?

Edit2:似乎你只能从php.ini中设置的扩展目录加载模块,并且你不能用ini_set覆盖extensions_dir,所以你必须说服你的主机去安装它,或者如果它们允许你拥有你自己的php.ini(许多通常在[username] /php.ini中),那么你可以在那里设置extensions_dir并加载模块。

+3

啊那须藤部分行不通的,因为我是一个共享的主机上。 – nickf 2008-12-29 05:59:45

真的最好的方法是告诉你的ISP加入mcrypt支持。即使你捆绑你自己的PHP扩展并使用dl()加载它,也不能保证它在PHP升级后能够正常工作,因为PHP有​​时候对版本号很挑剔。

dl()也不会帮你,因为它只加载来自特定路径的库,并且出于安全原因,这些路径通常只能由系统管理员写入。

我非常怀疑有没有办法使用二进制库未经主机的同意。

5.2.5之前的版本中的PHP允许您在dl()函数中使用路径,以便您可以轻松地将库加载到共享环境中。

由于5.2.5的“安全”原因,因此我改变了,并且据我所知,唯一的选择是让系统管理员将模块添加到extensions_dir。

This issue is described at bugs.PHP.net