簡體   English   中英

找不到mcrypt =>調用未定義的函數Laravel \ mcrypt_create_iv()

[英]can't find mcrypt => Call to undefined function Laravel\mcrypt_create_iv()

試圖設置Laravel並繼續遇到此錯誤。 我通過brew安裝了mcrypt,它位於/ usr / local / Cellar。 有什么想法嗎? ..它沒有出現在終端命令php -m中,如果這很重要。 我正在使用macs本地Web服務器運行Mountaion Lion。

Ubuntu或任何基於Debian的Linux用戶都可以使用apt-get安裝所需的包:

sudo apt-get install php5-mcrypt

請記住以后重新啟動Web服務器:

sudo service apache2 restart

如果仍然不起作用,請嘗試將配置文件鏈接到Web服務器的相應配置文件夾。 感謝dave1010在評論中的這個暗示。

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/apache2/conf.d/   # for Apache
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/cli/conf.d/       # for CLI

再次,重新啟動Web服務器:

sudo service apache2 restart

也許,如果還沒有工作,你還需要@RahulPrasad用php5enmod mcrypt顯示的行。

您還需要在php.ini文件中啟用它,並可能重啟Apache。

php.ini你會發現;mcrypt.so並刪除; 從中。

或者,如果它不在那里,只需在某處添加mcrypt.so

從PHP 7.0.0開始,salt選項也已被棄用。 現在優選簡單地使用默認生成的鹽。

試試sudo php5enmod mcrypt && sudo service apache2 restart

當你真正想要php56-mcrypt php模塊時,你已經安裝了mcrypt

您在問題中說明您可以在/usr/local/Cellar看到mcrypt ,並且您正在使用OSX 因此,使用Homebrew在OSX上安裝mcrypt PHP模塊的最簡單方法是:

// assuming you have php56
brew install php56-mcrypt

如果自制軟件找不到正確的軟件包,您可能需要點擊GitHub上的PHP存儲庫

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php

現在,當您發出命令brew search mcrypt ,您應該看到如下內容:

libtomcrypt   mcrypt   php53-mcrypt   php54-mcrypt   php55-mcrypt   php56-mcrypt

其他幾個海報都提到了編輯php.ini文件的必要性。 這是不必要的,因為自制軟件將負責為您激活模塊。 它將配置文件放在/usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini

您沒有安裝mcrypt PHP擴展。

對於Mac,我按照以下說明操作: Mac 10.7或10.8上的mcrypt

它們看起來很多,但事實並非如此,它很容易實現!

您可能已經安裝了mycrypt但沒有安裝/啟用php_mcrypt模塊。

對於最近升級到PHP 7的人來說只是一個注釋 - MCRYPT庫已被棄用 如果您升級到PHP 7並且現在看到此錯誤,那就是原因。 您應該切換到另一個庫, 此線程中提到了一些替代方案。

轉到php instalation中的CLI文件夾,在那里找到php.ini並啟用mcrypt。 終端有時使用另一個php.ini,它通常位於CLI文件夾中。

我用Homebrew安裝了php和mcrypt,但是在做了幾次brew update后我仍然遇到了這個錯誤。 我認為我的設置隨着時間的推移而變得有點不穩定。

事實證明我的php是從/private/etc/php.ini配置的, 而不是 /usr/local/etc/php/5.4/php.ini,正如Homebrew建議的那樣。 Mcrypt甚至沒有包含在/usr/local/etc/php/5.4/ext-mcrypt.ini中 ,考慮到php -i為我生成這個內容並沒有多大意義:

Configuration File (php.ini) Path => /usr/local/etc/php/5.4
Loaded Configuration File => /usr/local/etc/php/5.4/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/5.4/conf.d
Additional .ini files parsed => /usr/local/etc/php/5.4/conf.d/ext-mcrypt.ini

我的解決方案

  1. 以超級用戶身份編輯/private/etc/php.ini
  2. 添加extension="/usr/local/Cellar/php54-mcrypt/5.4.28/mcrypt.so"並保存
  3. 使用sudo apachectl restart啟動Apache

這最終對我有用:

brew reinstall --with-homebrew-curl --with-httpd php56
brew reinstall --build-from-source php56-mcrypt

我還必須做sudo chmod 777 /usr/local/etc/php/5.6/conf.d因為我在第二次brew reinstall嘗試將ext-mcrypt.ini添加到該目錄時ext-mcrypt.ini

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM