2016-12-08 16 views
18

बहिष्कृत किया गया है, मैं अपनी सभी परियोजनाओं के लिए लैरवेल 5.0 का उपयोग कर रहा हूं। कल, मैंने अपना PHP संस्करण 7.0.x से संस्करण 7.1.0 में अपडेट किया है। एक बार अपडेट किया, मैं अपने Laravel परियोजना खोलने और नीचे इस संदेश को देखा की कोशिश की:PHP7.1 और लैरवेल 5.3: फ़ंक्शन mcrypt_get_iv_size() को

ErrorException in Encrypter.php line 303: 
Function mcrypt_get_iv_size() is deprecated 

in Encrypter.php line 303 
at HandleExceptions->handleError('8192', 'Function mcrypt_get_iv_size() is deprecated', 'C:\wamp64\www\project1\vendor\laravel\framework\src\Illuminate\Encryption\Encrypter.php', '303', array()) in Encrypter.php line 303 

मैं जान सकती हूँ मैं यह कैसे हल कर सकते हैं? Laravel 5.3 का उपयोग कर समस्या हल? मुझे अपने लार्वेल को 5.3 तक अपडेट करना पसंद नहीं है क्योंकि यह एक बड़ी परियोजना है और इसे अपडेट करने में काफी समय लगेगा। इन दो संस्करणों के बीच बहुत अंतर हैं। बहुत सारे कोडों को संशोधित करने की आवश्यकता है।

क्या इस समस्या को हल करने का कोई आसान तरीका है?

+0

से app.php में सिफर बदलें, क्या आप 'openssl_cipher_iv_length' का उपयोग नहीं कर सकते? – Irvin

+0

मैक्रिप्ट का उपयोग नहीं करना सबसे अच्छा है, यह छोड़ दिया गया है, वर्षों में अपडेट नहीं किया गया है और मानक पीकेसीएस # 7 (नी पीकेसीएस # 5) पैडिंग का समर्थन नहीं करता है, केवल गैर-मानक नल पैडिंग जिसे बाइनरी के साथ भी इस्तेमाल नहीं किया जा सकता डेटा। mcrypt में कई बकाया [बग] (https://sourceforge.net/p/mcrypt/bugs/) 2003 से पहले डेटिंग कर रहे हैं। mcrypt-extension को बहिष्कृत किया गया है PHP 7.2 में हटा दिया जाएगा। इसके बजाय [defuse] (https://github.com/defuse/php-encryption) या [RNCryptor] (https://github.com/RNCryptor) का उपयोग करने पर विचार करें, वे एक पूर्ण समाधान प्रदान करते हैं और बनाए रखा जा रहा है और सही है। – zaph

उत्तर

21

यह त्रुटि तब होती है क्योंकि आपके पास AES-256-CBC के अलावा config/app.php फ़ाइल में आपके सिफर के रूप में कुछ अन्य है जो mcrypt एक्सटेंशन पर निर्भर करता है। शायद आप MCRYPT_RIJNDAEL_256 या MCRYPT_RIJNDAEL_128 का उपयोग कर रहे हैं?

एक पूर्ण उड़ा हुआ लैरवेल अपग्रेड के बिना आप सबसे अच्छी चीज कर सकते हैं legacy encrypter स्थापित करें और एईएस -256-सीबीसी सिफर का उपयोग करने के लिए अपने सभी एन्क्रिप्टेड डेटा को अपडेट करने के लिए इसका उपयोग करें जो लार्वेल 5.1, 1 के बाद से डिफ़ॉल्ट सिफर है। मानना। एक बार ऐसा करने के बाद, आप अपने Laravel आवेदन के लिए PHP 7.1 का उपयोग करने में सक्षम होना चाहिए।

+0

'config/app.php' में 'सिफर' बदलना मदद नहीं करता है: '' सिफर '=>' एईएस -256-सीबीसी ',' – Debiprasad

+0

सिफर बदलना प्रक्रिया का केवल एक हिस्सा है। उस सिफर का उपयोग करना निश्चित रूप से मैक्रिप्ट त्रुटि को रोकना चाहिए जब तक कि आपके एप्लिकेशन में कुछ और नहीं है mcrypt का उपयोग कर रहा है। –

15

अपने config/app.php विन्यास फाइल में, तुम "AES-256-CBC" को सिफर को अद्यतन करने और एक यादृच्छिक 32 बाइट स्ट्रिंग जो सुरक्षित रूप से उपयोग कर रहा php artisan key:generate

+0

मेरे लिए काम किया। मुझे php artisan key का उपयोग करके कुंजी को पुन: उत्पन्न करना पड़ा: उत्पन्न करें। मैंने कुंजी को पुन: उत्पन्न किए बिना कोशिश की और यह काम नहीं किया। बाद में, यह किया। – zvineyard

8

config/app.php की शुरुआत करने के लिए इस जोड़े उत्पन्न किया जा सकता है की कुंजी स्थापित करना चाहिए:

error_reporting(E_ALL^E_DEPRECATED);

स्रोत: https://stackoverflow.com/a/42515505/225790

0

इसे हल करने के लिए बस 'MCRYPT_RIJNDAEL_128' से 'ACRYPT_RIJNDAEL_128' से 'AES-256-CBC'

संबंधित मुद्दे