सबसे हाल के WP अपडेट के बाद से SVG फाइलें अपलोड नहीं हो रही हैं


16

मेरे पास मेरे फ़ंक्शन PHP फ़ाइल में एक स्निपेट है जो मुझे एसवीजी फाइलें अपलोड करने की अनुमति देता है। WP के नवीनतम संस्करण में अपग्रेड करने के बाद से, मैं अब svgs अपलोड नहीं कर सकता। मैंने सीएसएस ट्रिक्स वेबसाइट से एक दूसरा कोड स्निपेट भी आज़माया और वह भी काम नहीं करता है।

क्या किसी को पता है कि) आखिरी अपडेट के साथ ऐसा क्या हो सकता है और ख) क्या किसी को किसी काम का पता है।

यहां वह कोड है जो मैं आमतौर पर उपयोग करता हूं:

function svg_mime_types( $mimes ) {
   mimes['svg'] = 'image/svg+xml';
   return $mimes;}
add_filter( 'upload_mimes', 'svg_mime_types' );  

बहुत धन्यवाद

पॉल।

जवाबों:


16

वर्डप्रेस 4.7.1 में एक बदलाव पेश किया गया था जो एक अपलोड की गई फ़ाइल के वास्तविक माइम प्रकार के लिए जाँच करता है। यह SVG या DOCX जैसी फ़ाइल प्रकार अपलोड करने को तोड़ता है। वर्डप्रेस कोर में इस मुद्दे के लिए पहले से ही टिकट मौजूद हैं, जहां आप इसके बारे में अधिक पढ़ सकते हैं:

एक अस्थायी और अनुशंसित वर्कअराउंड (जब तक यह समस्या ठीक नहीं हो जाती है) निम्न प्लगइन है: रियल टाइम
चेक को अक्षम करें

यदि आप उस प्लगइन का उपयोग नहीं करना चाहते हैं, तो यहां वही कार्यक्षमता है:

add_filter( 'wp_check_filetype_and_ext', function($data, $file, $filename, $mimes) {
    global $wp_version;

    if ( '4.7.2' !== $wp_version ) {
       return $data;
    }

    $filetype = wp_check_filetype( $filename, $mimes );

    return [
        'ext'             => $filetype['ext'],
        'type'            => $filetype['type'],
        'proper_filename' => $data['proper_filename']
    ];

}, 10, 4 );

ध्यान दें कि इस स्निप में वर्डप्रेस अपडेट होते ही फिक्स को निष्क्रिय करने के लिए एक वर्जन चेक शामिल है।

संपादित करें

यह मुद्दा शुरू में 4.7.2 में तय किया गया था। लेकिन ४.२.२ एक जरूरी सुरक्षा रिलीज थी , लेकिन फिक्स ने इसे उस संस्करण में नहीं बनाया। अब इसे 4.7.3 में तय किया जाना है।


2
विकास के वातावरण के लिए वैकल्पिक वैकल्पिक हल: ऐड define( 'ALLOW_UNFILTERED_UPLOADS', true );करने के लिए wp-config.phpयह उत्पादन के लिए सुरक्षित नहीं है।
टिम मालोन

1
बस एक स्थान पर सभी जानकारी एकत्र करने के लिए, यहां एक संबंधित फोरम थ्रेड भी है: wordpress.org/support/topic/wp-4-7-1-kills-svg
टिम मालोन

इसके लिए धन्यवाद। यह फिलहाल एक जरूरी स्थिति नहीं है, लेकिन यह जानना अच्छा है कि आसपास कोई काम है। बहुत ज्यादा अधिमूल्यित।
पॉल 12_

जब तक यह विशेष रूप से जाँच नहीं करता है 'svg' === strtolower($filetype['ext']);और मामले में अधिक काम का परिचय देता है, तब तक बहुत अधिक व्यापक प्रभाव का परिचय देता है (अधिकतर) या फ़ाइल प्रकार svg की नहीं है ...
MrMesees

4

इस तरह इस टिकट से संबंधित हो सकती लगता https://core.trac.wordpress.org/ticket/39552 , कुछ की तरह दिखता है कि 4.7.1 में टूट गया


आह धन्यवाद मार्क। मुझे लगा कि कुछ गड़बड़ है। उम्मीद है कि इसे जल्द ही ठीक कर लिया जाएगा।
पॉल 12_

2

किसी को भी लगता है कि बस क्या है के साथ काम किया है और यह बहुत बुरा है तो यहाँ है कि मैं कैसे संभाला ...

इतिहास / पृष्ठभूमि

मैंने 2015 में एक सीवीजी अपलोडर बनाया था जो सीएसएस-ट्रिक्स लेख पर आधारित था जो कि देख रहा था। मुझे छवि पूर्वावलोकन के लिए ग्रिड भी काम कर रहा है, और कुछ अन्य फ़िक्सेस का उपयोग किया है। सरल प्लगइन (IMO फ़ाइल-प्रकार प्लग इन सरल होना चाहिए)

समाधान

4.7 के लिए कुछ बदलाव किए गए थे। वास्तविक पीटीए यह था कि image/माइम प्रकारों के लिए WP अब छवियों पर GD का उपयोग कर रहा है। इसे बायपास करने के लिए मैंने svgएक्सटेंशन का उपयोग करने के लिए सेट किया application/svg+xmlताकि GD फ़ाइल के साथ गड़बड़ न हो।

अद्यतन: 4.7.2 के रूप में कुछ चमकीली चिंगारी टूट गई वह भी कुछ मामलों में

फिर बाद में हुक के माध्यम से हम इसे वापस गर्म कर देते हैं image/svg+xml। इसका उपयोग अन्य उत्तरों में भी किया जाता है, लेकिन प्रभाव को खत्म करने के लिए हम सबसे पहले इसे अपने विशिष्ट मामले में बंद कर देते हैं (क्या यह एक एसवीजी फ़ाइल है); हम पढ़ने पर भरोसा कर सकते हैं $data['ext'](केवल एक तुलना और एक सरणी / हैश एक्सेस के रूप में फ़ाइल जानकारी प्राप्त करने के लिए फ़ंक्शन से सस्ता होना चाहिए)।

अपडेट: जैसा कि 4.7.2 $data['ext']हमेशा सेट नहीं होता है, इसलिए अब हम अगर लंबाई का उपयोग कर रहे हैं, तो फ़ाइल नाम का उपयोग करके <1 अर्क (संभावित असुरक्षित) एक्सटेंशन है strtolower(end(explode('.', $filename)))। फ़ाइलइन्फो का उपयोग करके वास्तव में लड़ने का कारण यह है कि अनिवार्य रूप से एक PHP एक्सटेंशन पर निर्भर होना बहुत अधिक अपारदर्शी है और यह हमेशा सभी के लिए काम नहीं करेगा (विशेषकर उन लोगों के बिना जो बिना एक्सटेंशन के या बिना एक्सेस के संकलित करते हैं अगर यह नहीं है)। मुझे ऐसा कुछ चाहिए जो किसी एक्सटेंशन के बदले काम करता हो। यह उन लोगों के लिए सही जानकारी होने की बात नहीं है जो आउटपुट के FileInfoविस्तार और उन पर भरोसा करने के लिए हैं (मेरा मानना ​​है कि यह 5.6+ में डिफ़ॉल्ट है) इसे काम करना चाहिए। इसके अलावा क्योंकि यह एक प्लगइन है, यह कोर को संशोधित नहीं कर रहा है आप इस कोड को बंद कर सकते हैं या हुक को अपंजीकृत कर सकते हैं।

https://github.com/Lewiscowles1986/WordPressSVGPlugin

देख

अन्य workarounds के

अनफ़िल्टर्ड अपलोड की अनुमति देना एक भयानक समाधान है क्योंकि जैसा कि अन्य ने कहा है कि इस थ्रेड को लिंक करने से लोग मीडिया अपलोडर के माध्यम से php फाइलें अपलोड कर सकते हैं (यह बुरा है और यदि आप इसे करते हैं, तो आपको रोकना चाहिए और सोचना चाहिए!)

चेक के बिना किसी भी फ़ंक्शन के माध्यम से हर फ़ाइल को मजबूर करना (विडंबना यह है कि यदि आपके पास image/माइम प्रकार है तो आपके पास बस एक साधारण अतिरिक्त चेक नहीं हो सकता है)। यह एक अपेक्षाकृत आला समस्या को हल करने के लिए दूरगामी व्यापक प्रभाव पैदा करने की क्षमता रखता है और समग्र रूप से अधिक काम का परिचय देता है (मेरे प्लगइन भी व्यवस्थापक उपयोगकर्ताओं को काम करने के लिए अधिक मीडिया मीडिया UI को काम करने के लिए पेश करता है)

यदि हम माइम को एप्लीकेशन / svg + xml के रूप में छोड़ देते हैं और केवल माइम के प्रकारों को फ़िल्टर करते हैं, तो इमेज अपलोड होगी लेकिन क्या AFAIK को फीचर्ड इमेज आदि के रूप में उपयोग किए जाने के लिए फिक्स की आवश्यकता होगी। यूनिवर्सल एसवीजी अनुभव सुनिश्चित करने पर अधिक काम किया जाना है ताकि हमने इसे चुना। ध्यान से लड़ाई लेने के लिए।

उम्मीद है की यह मदद करेगा।


ठीक है, इस पूरे मामले को चलाने वाला मुख्य मुद्दा यह है कि अपलोड की गई फ़ाइलों को प्रकाशित किए जाने से पहले कोई मॉडरेशन नहीं है। यह अनुमान लगाने की कोशिश करना कि क्या कोई फ़ाइल मूल रूप से केवल इसके विस्तार के आधार पर खराब है, हमेशा एक बुरा विचार है। सिद्धांत रूप में, व्यवस्थापक द्वारा सभी अपलोड की अनुमति देने में कोई समस्या नहीं है, जबकि कुछ सुझाए गए फ़िक्सेस आम तौर पर बहुत व्यापक हो सकते हैं, व्यवहार में वे कई लोगों के लिए काफी अच्छे हो सकते हैं। साइड नोट IMHO SVG एक पीडीएफ के रूप में एक छवि के रूप में ज्यादा है, तकनीकी रूप से यह नहीं है।
मार्क कप्लून

जो भी माइम-प्रकार से असहमत हैं, वे दुनिया भर के ब्राउज़र विक्रेताओं और सॉफ़्टवेयर उत्पादकों के साथ असहमत हैं। वर्डप्रेस केवल एक्सटेंशन की जांच करता है क्योंकि यह नेटवर्क सुरक्षा के एक टुकड़े के रूप में अभिप्रेत नहीं है और यह ठीक है (उसी कारण से Microsoft कार्यालय आपकी कार को पार्क नहीं करता है)। यह कहना कम से कम अतिशयोक्तिपूर्ण है कि WP को सतही की तुलना में अधिक जाँच करनी चाहिए, लेकिन मैं मानता हूँ कि अधिक सुरक्षा कार्य करने की आवश्यकता है, बस यह नहीं है कि WP उस कार्य के लिए एक उपयुक्त वाहन है (यह लगभग उतना ही बड़ा है)
MrMesees

वास्तव में ब्राउज़र सभी प्रकार की परिस्थितियों में सामग्री का निरीक्षण करते हैं developer.mozilla.org/en-US/docs/Mozilla/… और वे कभी भी विस्तार को नहीं देखते हैं। और हाँ किसी को भी उम्मीद नहीं है कि इस बिंदु पर कड़ी सुरक्षा पर ध्यान केंद्रित किया जाएगा;)
मार्क कपलुन

पहली बात, एक ब्राउज़र का एक ब्लॉग आलेख! = सभी ब्राउज़र। मुझे पता है कि क्रोम माइम पर ध्यान देता है। दूसरी बात, फाइलों का आत्मनिरीक्षण नियमों का पालन करता है; यह मुक्त रूप नहीं है जैसा कि ढीली भाषा बताती है। लचीलेपन के लिए अधिक व्यापक सत्यापन ट्रेडों का प्रदर्शन करता है (यह एकल पीसी स्तर के ग्राहकों पर काम करता है, न कि बहु-उपयोगकर्ता सार्वजनिक प्रसाद)। इस खुले फ़ायरफ़ॉक्स का प्रमाण देने के लिए, खुले 100 टैब मेमोरी और सीपीयू उपयोग को देखते हैं। एक वेबसाइट के लिए 100 अनुरोधों के साथ एक ही कोशिश करो! अंतिम बात कृपया रुकें जब तक कि आपके पास कुछ वास्तविक तथ्य नहीं हैं जो कि डिग्रेसन नहीं जोड़ते हैं। यह काफी उग्र है और किसी को फायदा नहीं पहुंचा रहा है।
18

किसी अपलोड की गई फ़ाइल के 256 पहले बाइट्स का निरीक्षण करने से लगभग शून्य प्रदर्शन हिट हो जाएगा क्योंकि फ़ाइल संभवतः मेमोरी या एसएसडी कैश में है, और यह किसी भी मामले में तालमेल देता है जब आप इसकी तुलना फ़ाइलों को आकार देने से प्रदर्शन हिट से करते हैं, थंबनेल और क्या? नहीं। अन्य ब्राउज़रों के लिए, बिल्कुल समान कोड प्रवाह में नहीं, लेकिन इस stackoverflow.com/questions/1201945/… से यह अनुमान लगाने में दूर नहीं है कि क्रोम और फ़ायरफ़ॉक्स बहुत अधिक संरेखित हैं
मार्क कपलुन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.