कमांड लाइन द्वारा उपयोग की जाने वाली php.ini फाइल को कैसे खोजें?


389

मुझे अपने EasyPhp वातावरण में pdo_mysql को सक्षम करने की आवश्यकता है, इसलिए मैंने php.ini फ़ाइल में जाकर निम्न पंक्ति को अनइंस्टॉल कर दिया:

extension=php_pdo_mysql.dll

दुर्भाग्य से मुझे अभी भी वही समस्या है। मैं सीएलआई का उपयोग कर रहा हूं इसलिए मुझे लगता है कि मुझे सीएलआई द्वारा उपयोग की जाने वाली php.ini फ़ाइल का पता लगाने की आवश्यकता है। मुझे ये कैसे मिल सकता है?


इसके अलावा stackoverflow.com/q/8684609/632951
Pacerier

@sjas यह गलत नहीं है, यह सही है और आपको क्ली में php.ini का रास्ता पता है।
सईदबकर

जवाबों:


951

बस चलाएं php --iniऔर अपने सीएलआई द्वारा उपयोग किए गए Loaded Configuration Fileस्थान के लिए आउटपुट देखेंphp.ini


5
@ मैचेल मैं आपको अपवित्र करूंगा, लेकिन मुझे लगता है कि आपको उत्तर को grep के साथ पंक्ति में पोस्ट करना चाहिए था।
जिम डब्ल्यू।

9
@BradFJacobs जब अभी क्रॉस-प्लेटफ़ॉर्म है तो grep का उपयोग क्यों करें?
गार्ट क्लैबोर्न

लेकिन क्या यह आपको केवल वह नहीं दिखाता है जो CLI के माध्यम से PHP का उपयोग करते समय लोड किया जाता है (क्योंकि आप उस से कमांड चला रहे हैं)।
एंटनी

1
@ एंटनीडाय एंड्रिया: जो वास्तव में सवाल है। देख? यह शीर्षक में भी राज्य करता है: कमांड लाइन द्वारा उपयोग की जाने वाली php.ini फ़ाइल को कैसे खोजें ?
मचल

यह मेरा जवाब नहीं है ... मेरे मामले में मैं टाइप करता हूं sudo find / -iname php.iniऔर यह /etc/php/7.0/apache2/php.iniमेरी मशीन के सही php.ini कॉन्फिग फाइल के सही स्थान को php --iniphp -i | grep php.ini/etc/php/7.0/cli/php.ini
ढूंढता है

366

आप एक पूर्ण phpinfo()का उपयोग कर प्राप्त कर सकते हैं :

php -i 

और, वहाँ, वहाँ php.iniइस्तेमाल की गई फ़ाइल है:

$ php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

findइसके बजाय विंडोज उपयोग पर :

php -i|find/i"configuration file"

12
तब इस php उदाहरण में सभी php.ini का उपयोग नहीं किया गया था, लेकिन डिफ़ॉल्ट मान। Configuration FilePhpinfo की पंक्ति () अंतिम स्थान दिखाती है जहां php एक आईएनआई फ़ाइल की तलाश में था। यह या तो वह स्थान हो सकता है जहां इसे ऐसी फ़ाइल या अंतिम विकल्प मिला है जो विंडोज़ पर% SYSTEMROOT% होता है।
वोल्कर

2
@ पास्कल: php -i | find "Configuration file"विंडोज पर काम करना चाहिए। निश्चित रूप से grep जितना शक्तिशाली नहीं है, लेकिन findयह आपके लिए बुनियादी स्ट्रिंग खोज करेगा। बेशक, अगर php -i अपने आउटपुट को stderr पर डंप करता है, तो आप शायद SOL हैं।
मार्क बी

2
findडिफ़ॉल्ट रूप से केस-संवेदी है, इसलिए इसे पूर्ण होना चाहिए ( php -i | find "Configuration File") या केस-असंवेदनशील ( php -i | find /i "Configuration file"- /iध्वज को नोट करें )।
deizel

9
php --iniएक विकल्प के रूप में जोड़ने पर विचार करें ; PHP 5.2.3 के बाद से उपलब्ध :)
Ja'ck

2
किसी ने उल्लेख नहीं किया, कि php_ini_loaded_file पर कॉल करके स्क्रिप्ट से उस मूल्य को लेना संभव है और जब php_ini_scanned_files की
राडेक बेंकेल

16

आप इसके लिए get_cfg_var ('cfg_file_path') का उपयोग कर सकते हैं :

सिस्टम कॉन्फ़िगरेशन फ़ाइल का उपयोग कर रहा है या नहीं यह जाँचने के लिए, cfg_file_path कॉन्फ़िगरेशन सेटिंग का मान पुनः प्राप्त करने का प्रयास करें। यदि यह उपलब्ध है, तो एक कॉन्फ़िगरेशन फ़ाइल का उपयोग किया जा रहा है।
Phpinfo () के विपरीत यह बताएगा कि क्या यह php.ini को बिल्कुल नहीं मिला / उपयोग नहीं किया।

var_dump( get_cfg_var('cfg_file_path') );

और आप बस php.ini का स्थान निर्धारित कर सकते हैं । आप कमांड लाइन संस्करण का उपयोग कर रहे हैं, इसलिए -cपैरामीटर का उपयोग करके आप स्थान निर्दिष्ट कर सकते हैं, जैसे

php -c /home/me/php.ini -f /home/me/test.php

13

php --iniअपने टर्मिनल में चलाएं , आपको ini फ़ाइलों के बारे में सभी जानकारी मिल जाएगी

[root@tamilan src]# php --ini
Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/apc.ini,
/etc/php.d/bcmath.ini,
/etc/php.d/curl.ini,
/etc/php.d/dba.ini,
/etc/php.d/dom.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/gd.ini,
/etc/php.d/imap.ini,
/etc/php.d/json.ini,
/etc/php.d/mbstring.ini,
/etc/php.d/memcache.ini,
/etc/php.d/mysql.ini,
/etc/php.d/mysqli.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/posix.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/ssh2.ini,
/etc/php.d/sysvmsg.ini,
/etc/php.d/sysvsem.ini,
/etc/php.d/sysvshm.ini,
/etc/php.d/wddx.ini,
/etc/php.d/xmlreader.ini,
/etc/php.d/xmlwriter.ini,
/etc/php.d/xsl.ini,
/etc/php.d/zip.ini

अधिक के लिए, कमांडिंग कमांड का उपयोग करें php --helpयह सभी संभावित विकल्पों को प्रदर्शित करेगा।


8

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

मैं एक बहुत शक्तिशाली और उपयोगी कमांड-लाइन प्रोग्राम का उपयोग करता हूं, जिसे स्ट्रेस कहा जाता है, यह दिखाने के लिए कि वास्तव में मेरी पीठ के पीछे क्या चल रहा है!

$ strace -o strace.log php --version
$ grep php.ini strace.log

स्ट्रेस कर्नेल (सिस्टम) कॉल को खोदता है जिसे आपका प्रोग्राम बनाता है और आउटपुट को -o द्वारा निर्दिष्ट फ़ाइल में डंप करता है

इस लॉग में php.ini की घटनाओं को खोजने के लिए grep का उपयोग करना आसान है । यह स्पष्ट है कि जो चल रहा है उसे देखने के लिए निम्नलिखित विशिष्ट प्रतिक्रिया देख रहे हैं।

open("/usr/bin/php.ini", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/etc/php.ini", O_RDONLY)          = 3
lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69105, ...}) = 0

1
php -iमुझे गलत परिणाम दिए, लेकिन यह पूरी तरह से ठीक है। धन्यवाद!
दिमित्री गिंजबर्ग

7

यदि आप सभी कॉन्फ़िगरेशन फ़ाइल लोड करना चाहते हैं, तो यह आपको बताएगा:

php -i | grep "\.ini"

कुछ सिस्टम एक से अधिक आईएनआई फाइल से चीजों को लोड करते हैं। मेरे ubuntu प्रणाली पर, यह इस तरह दिखता है:

$  php -i | grep "\.ini"
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Scan this dir for additional .ini files => /etc/php5/cli/conf.d
additional .ini files parsed => /etc/php5/cli/conf.d/apc.ini,
/etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/gd.ini,
/etc/php5/cli/conf.d/mcrypt.ini,
/etc/php5/cli/conf.d/memcache.ini,
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/mysqli.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini

6

OSX Mavericks पर, चल रहा है:

$ php -i | grep 'Configuration File'

लौटा हुआ:

Configuration File (php.ini) Path => /etc
Loaded Configuration File:         (none)

में /etc/निर्देशिका था:

php.ini.default

(साथ ही php-fpm.conf.default)

मैं कॉपी php.ini.defaultकरने में सक्षम था php.ini, date.timezone = "US/Central"शीर्ष पर (नीचे सही [php]) जोड़ें, और समस्या हल हो गई है।

(कम से कम त्रुटि संदेश चला गया है।)


5

यदि आपको इसे किसी अन्य एप्लिकेशन को पास करने की आवश्यकता है, तो आप कुछ ऐसा कर सकते हैं:

php --ini | grep Loaded | cut -d" " -f12

केवल रास्ता देता है। php -c $(php --ini | grep Loaded | cut -d" " -f12)विन्यास फाइल में पास होगा (के लिए उपयोगी fpm)


3

मैं क्या याद है जब मैं EasyPHP का उपयोग करते थे से, php.ini फ़ाइल में या तो है C:\Windows\याC:\Windows\System32


2
ठीक है यह मुझे C: \ WINDOWS बता रहा है। लेकिन मैं इसे वहाँ गंभीरता से नहीं मिला!
अमोकेरेन चेंटिर

2

करना

find / -type f -name "php.ini" 

यह नामित सभी फ़ाइलों को आउटपुट करेगा php.ini

आमतौर पर पता लगाएं कि आप किसका उपयोग कर रहे हैं apache2/php.ini


अगर php.ini फ़ाइल (कुछ डॉकटर कंटेनर) नहीं है तो यह काम नहीं करता है। इसके लिए स्वीकृत उत्तर बेहतर अनुकूल है।
मैनुएल मैनहार्ट

myyyyyyyyyyy आदमी
डॉक्टर छुट्टी

@emilioestevez * महिला
विलसमैन

1

अपनी php.ini फ़ाइल में अपनी एक्सटेंशन डायरेक्टरी सेट करें, जैसे:

extension_dir = "C:/php/ext/"

आप देखेंगे आप PHP फ़ोल्डर में सभी dll और एक्सटेंशन के साथ एक एक्स्ट्रीम फ़ोल्डर है।


0

स्थानीय फ़ाइल में CLI phpinfo आउटपुट सहेजें:

php -i >> phpinfo-cli.txt

0

डॉकटर कंटेनर में phpmyadmin / phpmyadmin no php.ini फ़ाइल। लेकिन दो फाइलें हैं: php.ini-debug और php.ini-production

समस्या को हल करने के लिए, बस फ़ाइलों में से एक का नाम बदलकर php.ini करें और docker कंटेनर को पुनरारंभ करें।


-4

कमांड लाइन द्वारा उपयोग किया जाने वाला कोई php.ini नहीं है। आपको फ़ाइल को php निर्देशिका में संपादित ...EasyPHP-<<version>>\apache\php.ini करने की ...EasyPHP-<<version>>\php\php.iniतुलना में फ़ाइल से कॉपी करना होगा

संदर्भ:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.