繁体   English   中英

在共享主机上安装PHP扩展

[英]Installing PHP extensions on shared hosting

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


更新:再看一下,看起来我可以使用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并加载模块。

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

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

由于5.2.5的“安全”原因,这一点发生了变化,据我所知,您唯一的选择是让系统管理员将模块添加到extensions_dir。

bugs.PHP.net中描述了此问题

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

我非常怀疑在没有托管人同意的情况下,有一种方法可以使用二进制库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM