2008-12-29 111 views
7

我需要在我的網站上啓用mcrypt功能,除了我在共享主機上(運行linux),並且顯然無法訪問php.ini文件。似乎有安裝PEAR模塊的選項,但搜索告訴我mcrypt不可用。有什麼辦法可以做到這一點,而不是乞求技術支持來幫助我?在共享主機上安裝PHP擴展


更新:環顧四周多一點,它看起來像我可能能夠使用dl()功能在運行時動態加載庫。由於我只在一個地方使用mcrypt函數,因此可能會因爲性能受到影響而離開(我假設有一個命中)應該是最小的。現在唯一的問題是如何獲得libmcrypt.so文件?


另一個更新:我已經從Sourceforge下載libmcrypt.tar.bz2文件並運行./configuremake,然後複製libmcrypt.so.4.4.8文件到我的主目錄(如libmcrypt.so),但現在我不能找到把它放在哪裏,以便dl()函數可以找到它。

回答

3

的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

2

真的最好的方法是告訴你的ISP加入mcrypt支持。即使你捆綁你自己的PHP擴展並使用dl()加載它,也不能保證它在PHP升級後能夠正常工作,因爲PHP有​​時候對版本號很挑剔。

0

dl()也不會幫你,因爲它只加載來自特定路徑的庫,並且出於安全原因,這些路徑通常只能由系統管理員寫入。

我非常懷疑有沒有辦法使用二進制庫未經主機的同意。

0

5.2.5之前的版本中的PHP允許您在dl()函數中使用路徑,以便您可以輕鬆地將庫加載到共享環境中。

由於5.2.5的「安全」原因,因此我改變了,並且據我所知,唯一的選擇是讓系統管理員將模塊添加到extensions_dir。

This issue is described at bugs.PHP.net