2013-01-23 42 views
15

से गतिशील रूप से लोड किए गए PHP एक्सटेंशन की जांच करें I विभिन्न प्रकार के PHP एक्सटेंशन (PHP मॉड्यूल) को समझने के लिए PHP manual की जांच कर रहा था। ज़ेंड मॉड्यूल (मुख्य रूप से PHP गुरु के लिए), अंतर्निहित मॉड्यूल और बाहरी मॉड्यूल हैं।कमांड लाइन

क्या कमांड लाइन से बताने का कोई तरीका है कि PHP मॉड्यूल को गतिशील रूप से लोड किया गया है या क्या यह PHP बाइनरी में अंतर्निहित है या नहीं?

मेरा मतलब है: php -m के साथ मुझे सभी लोड मॉड्यूल मिलते हैं, लेकिन मैं जानना चाहता हूं कि कौन से लोग अंतर्निहित हैं और कौन से बाहरी हैं।

उत्तर

2

मुझे यकीन नहीं है कि यह नियमित PHP कोड से संभव है, कुछ आंतरिक ज़ेंड कॉल हो सकते हैं जो आप स्वयं के विस्तार से कर सकते हैं। हालांकि, वहाँ अनुमान लगा, पता चल सके कि एक लोड एक्सटेंशन एक संभावना की तलाश में गतिशील पुस्तकालय उपलब्ध है द्वारा की मुखर तरह से हो सकता है ...

$extdir=ini_get('extension_dir'); 

$modules=get_loaded_extensions(); 
foreach($modules as $m){ 
    $lib=$extdir.'/'.$m.'.so'; 
    if (file_exists($lib)) { 
     print "$m: dynamically loaded\n"; 
    } else { 
     print "$m: statically loaded\n"; 
    } 
} 

सरल नहीं है यही कारण है कि है, लेकिन आप के लिए पर्याप्त हो सकता है! अधिक जानकारी के लिए

php -m 

या इस:

+0

लेकिन स्क्रिप्ट को php.ini में शामिल किया गया है, तो भी स्क्रिप्ट को जांचना होगा (यदि "एक्सटेंशन = $ m.so" वाली पंक्ति में बेन जोड़ा गया है)?साथ ही, मैं सोच रहा था कि phpinfo() आउटपुट में इसके बारे में कोई जानकारी है, लेकिन मैं इसे – rodrunner

35

बस कमांड लाइन पर इस आदेश चला

php -i 

आशा इस मदद करता है।

+2

नहीं देख पा रहा हूं यह गतिशील रूप से लोड किए गए एक्सटेंशन और बाइनरी में बनाए गए लोगों के बीच अंतर कैसे मदद करता है? जहां तक ​​मैं दोनों प्रकारों को समान रूप से दिखा सकता हूं। जब तक कि मुझे कुछ याद नहीं आ रहा है, यह सवाल पूछने के लिए पूरी तरह से अप्रासंगिक है - खासकर जब पूछताछ * प्रश्न में 'php -m' का उल्लेख किया गया है * और समझाया कि क्यों वह उसे आवश्यक जानकारी नहीं देता है। –

+1

लोग इस विषय को पढ़ते हैं, पूरे प्रश्न नहीं, और वह उत्तर ढूंढते हैं जो वे दूसरे उत्तर में देख रहे हैं, पहले नहीं। इसे सही करने के लिए, प्रश्न का विषय अधिक विशिष्ट होना चाहिए कि केवल गतिशील रूप से लोड किए गए एक्सटेंशन ही इसमें रुचि रखते हैं: "कमांड लाइन से गतिशील रूप से लोड किए गए PHP एक्सटेंशन जांचें" ... – Ilija

4

1) भागो

php -i 

उत्पादन से निम्नलिखित मानकों का पता लगाने:

लोडेड कॉन्फ़िगरेशन फ़ाइल - इस php.ini फ़ाइल का स्थान निर्दिष्ट होगा अपने php के द्वारा प्रयोग किया जा रहा है।

अतिरिक्त डीआईआई फाइलों के लिए इस डीआईआर को स्कैन करें - यदि यह खाली नहीं है, तो इस निर्देशिका में कुछ .ini फाइलें गतिशील रूप से PHP एक्सटेंशन लोड करेंगी।

अतिरिक्त .ini फाइलें - पिछले पैरामीटर में निर्दिष्ट निर्देशिका से लोड की गई .ini फ़ाइलें।

आप लिनक्स आप सका उपयोग कर रहे हैं:

php -i | grep -e "Loaded Configuration File" -e "Scan this dir for additional .ini files" -e "Additional .ini files parsed" 

2) अपने php.ini फ़ाइल का नाम बदलें और अतिरिक्त .ini फ़ाइलों के साथ फ़ोल्डर का नाम बदलें।

3) दोहराएँ कदम # 1 और सत्यापित करें कि लोडेड कॉन्फ़िगरेशन फ़ाइल और अतिरिक्त .ini फ़ाइलों पार्स दोनों एक (कोई नहीं की

4) भागो

php -m 

मूल्य) है अब आप एक सूची देखेंगे जिसमें केवल एक्सटेंशन शामिल हैं जो PHP बाइनरी में अंतर्निहित हैं।

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

  • कोई संबंधित समस्या नहीं^_^