programing

치명적 오류: 정의되지 않은 함수 mcrypt_encrypt() 호출

firstcheck 2023. 1. 1. 11:40
반응형

치명적 오류: 정의되지 않은 함수 mcrypt_encrypt() 호출

메모: MCrypt 지원이 의존하는 라이브러리는 몇 년 동안 업데이트되지 않았습니다.MCrypt는 더 이상 실행 가능하고 안전한 데이터 암호화 방법으로 간주되지 않습니다.게다가 MCrypt는 PHP 5에서 폐지되어 PHP 7에서 완전히 삭제되었습니다.MCrypt를 실행하는 코드가 있다면 보다 현대적인 암호화 라이브러리를 사용하도록 리팩터링해야 합니다.


메시지 「」의 있는 사람이 ?(Call to undefined function mcrypt_encrypt() )아, 음음?

이 코드가 작동하기 전에 수행해야 하는 PHP의 설정 중 몇 가지 단계가 누락되어 있지 않습니까?

$key = 'password to (en/de)crypt';
$string = 'string to be encrypted';

$test = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key),
            $string, MCRYPT_MODE_CBC, md5(md5($key)));

최근 ubuntu 14.04로 업데이트한 경우 다음 문제를 해결합니다.

$ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ sudo php5enmod mcrypt
$ sudo service apache2 restart

5.2가 있었던 은 PHP 5.2.8을 이었습니다.php.ini,를합니다.php_mcrypt.dll는 " " "를 한 후" 입니다.; , ,, 경:

;extension=php_mcrypt.dll로로 합니다.extension=php_mcrypt.dll

윈도용

;extension=php_mcrypt.dll to extension=php_mcrypt.dll 
 then restart your apache server

Redhat의 경우

sudo yum install php55-mcrypt //if php5.5
sudo yum install php-mcrypt //if less than 5.4
sudo service httpd restart //if apache 2.4
sudo /etc/init.d/httpd restart //if apache 2.2 or less

Ubuntu의 경우

sudo apt-get install php5-mcrypt
sudo service apache2 restart //if server not reloaded automatically 

아직도 안 돼?

sudo php5enmod mcrypt & & sudo service apache2 재시작

PHP 7.2 이상을 사용하는 경우:

이 함수는 PHP 7.1.0에서는 DEPRECIATED, PHP 7.2.0에서는 REMOBED입니다.

출처 : http://php.net/manual/en/function.mcrypt-encrypt.php

따라서 php 코드를 교체하고 mcrypt 없이 솔루션을 찾아야 합니다.

또는 방금 알게 되었습니다만, 여전히 PHP 7.2.0에서 mcrypt를 사용할 수 있지만, PHP 확장 커뮤니티 라이브러리로 설치해야 합니다.(https://pecl.php.net/)

Debian/Ubuntu Linux Distros의 경우:

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install php7.2-dev
sudo apt-get -y install libmcrypt-dev

그 후, 다음과 같이 합니다.

sudo pecl install mcrypt-1.0.1

출처 : https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/

mcrypt 라이브러리가 설치되어 있지 않습니다.

상세한 것에 대하여는, http://www.php.net/manual/en/mcrypt.setup.php 를 참조해 주세요.

공유 호스팅에 있는 경우 공급자에게 설치를 요청할 수 있습니다.


OSX에서는 홈브루를 통해 mcrypt를 쉽게 설치할 수 있습니다.

brew install php54-mcrypt --without-homebrew-php

그런 다음 /etc/php.ini에 이 행을 추가합니다.

extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"

Ubuntu에서 나는 문제를 가지고 그것을 해결했다.

$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload

ubuntu 14.10의 경우:

모듈 mcrypt를 설치합니다.

sudo apt install php5-mcrypt

apache2에서 mcrypt 모듈 사용

sudo a2enmod mcrypt

모듈 컨피규레이션 새로고침

sudo service apache2 restart

Linux Mint 17.1 Rebecca - 정의되지 않은 함수 mcrypt_create_iv 호출...

php.ini에 다음 행을 추가하여 해결했습니다.

extension=mcrypt.so

그 후 a는

service apache2 restart

해결했다...

mcrypt의 PHP 7 버전에서도 같은 문제가 있었습니다.

이건 나한테 효과가 있었어.

sudo apt-get update
sudo apt-get install mcrypt php7.0-mcrypt
sudo apt-get upgrade
sudo service apache2 restart (if needed)

mcrypt는 유효합니까?이 경우 를 사용하여 확인할 수 있습니다.

그리고 Apache와 같은 웹 서버를 통해 PHP를 서비스하는 경우 웹 서버를 재시작해 보십시오.이렇게 하면 존재하는 모든 PHP 모듈이 "리셋"되어 새 구성이 활성화됩니다.

debian linux 를 사용하고 있는 경우(Linux mint 12 를 사용하고 있는 경우는, SSH 를 사용한 Ubuntu 12.04.1 LTS 서버에 문제가 있습니다).

@dkamins 조언에 따라 mcrypt가 설치되어 있고 php5 설치가 활성화 되어 있는지 확인할 것을 권장합니다."sudo apt-get install php5-mcrypt"를 사용하여 설치합니다.제 메모는 다음과 같습니다.

버전 PHP PHP Version 5.3.10-1ubuntu3.4@John Conde의 제안대로 phpinfo()를 열면 웹 서버에서 테스트 파일을 만듭니다(예를 들어 "브라우저를 통해 서버 상에서 어디서나 액세스할 수 있는" 내용으로 상태 페이지 testphp.php 작성).

브라우저에서 열었을 때 상태 페이지에 활성화 또는 비활성화 상태가 표시되지 않았습니다. @Foroney가 파일을 때 @Anthony Foroney의 코멘트를 했습니다.;extension=php_mcrypt.dll to extension=php_mcrypt.dll

Apache를 Apache2를 사용하여 할 수 ).sudo /etc/init.d/apache2 restart, 그 는, 「 」를 참조해 주세요.sudo restart변화도 없고, 변화도 없고, 모든 것이 안 된다고 믿는다.@dkamins "sudo apt-get install php5-mcrypt" @ @ 、 apache 。그 후, 에러는 없어지고, 애플리케이션은 정상적으로 동작했습니다.

php5-fpm 을 사용하고 있는 경우는, mcrypt 를 인스톨 한 후에, 반드시 재기동해 주세요.

서비스 php5-fpm 재시작

ubuntu 14.04 를 사용하고 있는 경우는, 다음의 문제를 해결합니다.

가 되어 있는지 확인합니다.apt-get install php5-mcrypt

설치된 경우 이 2개의 명령어를 실행하거나 이 2개의 명령어를 설치하고 실행합니다.

$ sudo php5enmod mcrypt
$ sudo service apache2 restart

잘 됐으면 좋겠어요.

내 환경: Windows 10, Xampp 제어판 v3.2.4, PHP 7.3.2

순서 1: 사용하시는 시스템에 적합한 버전을 https://pecl.php.net/package/mcrypt/1.0.3/windows 에서 다운로드합니다.

스텝 2: 압축을 풀고 php_mcrypt.dll 파일을 ../xampp/php/ext/에 복사합니다.

3: 행 "3: ../xampp/php/php.ini" 를 합니다.extension=php_mcrypt.dll

4단계: Apache 재시작 완료!

Ubuntu 18.04 및 php7.0의 경우

$ sudo apt-get install php7.0-mcrypt

$ sudo systemctl reload apache2

Linux 기반(Fedora)

yum -y install php-mcrypt

PHP.ini에 'http=mcrypt.so'을 추가하여 모듈을 사용하도록 설정합니다(/etc/http.ini).

systemctl restart httpd.service

알았어!

다음 기능을 사용하여 mcrypt를 제거할 수 있었습니다.

sudo apt-get purge php5-mcrypt

재설치만 하면 됩니다.

sudo apt-get install php5-mcrypt

위에서 설명한 바와 같이 Apache를 재시작하는 것을 잊지 마십시오.

(프로비저닝된 php55와 함께 VM을 사용하는 경우) 이 방법이 왜 그리고 어떻게 다른지 모르겠지만 다른 사람에게 도움이 될 수도 있습니다.xcache와 같은 다른 모듈에서도 이 문제가 있었습니다.

php5-mcrypt를 확인하고 설치합니다.

sudo apt-get install php5-mcrypt

언급URL : https://stackoverflow.com/questions/2604435/fatal-error-call-to-undefined-function-mcrypt-encrypt

반응형