Komut satırı tarafından kullanılan php.ini dosyası nasıl bulunur?


389

Ben pp_mysql benim EasyPhp ortamında etkinleştirmek gerekir, bu yüzden php.ini dosyasına gitti ve aşağıdaki satırı uncommented:

extension=php_pdo_mysql.dll

Maalesef hala aynı problemim var. CLI tarafından kullanılan php.ini dosyasını bulmak gerekir varsayalım CLI kullanıyorum. Nasıl bulabilirim?



@sjas Yanlış değil, doğrudur ve yüklenen php.ini dosyasının yolunu size bildirir.
SaidbakR

Yanıtlar:


951

Çalıştırın php --inive CLI'nız tarafından kullanılan Loaded Configuration Filekonumun çıktısını arayınphp.ini


5
@Mchl Seni oylarım ama bence cevabı grep ile birlikte göndermeliydin.
Jim W.

9
@BradFJacobs neden şimdi çapraz platform olduğunda grep kullanıyorsunuz?
Garet Claborn

Ancak bu sadece PHP'yi CLI aracılığıyla kullanırken yüklü olanı göstermez (çünkü komutu bundan çalıştırıyorsunuz).
Antony D'Andrea

1
@ AntonyD'Andrea: sorusu tam olarak bu. Görmek? Bu başlıkta bile böyle yapar: Komut satırı tarafından kullanılan php.ini dosyası nasıl bulunur ?
Mchl

bu benim cevabım değil ... benim durumumda yazıyorum sudo find / -iname php.inive bu /etc/php/7.0/apache2/php.initarafından bulunamadığı benim makine doğru php.ini yapılandırma dosyasının doğru yeri php --iniphp -i | grep php.ini/etc/php/7.0/cli/php.ini
bulur

366

Şunları phpinfo()kullanarak bir tam alabilirsiniz :

php -i 

Ve orada, php.inikullanılan dosya var :

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

Windows'da findbunun yerine şunları kullanın:

php -i|find/i"configuration file"

12
Daha sonra bu php örneği varsayılan değerler dışında hiç php.ini kullanmamıştır. Configuration FilePhpinfo çizgi () php bir ini dosyası için baktım son yer gösterir. Bu, böyle bir dosyayı bulduğu yer veya pencerelerde% SYSTEMROOT% olan son seçenek olabilir.
VolkerK

2
@pascal: php -i | find "Configuration file"Windows üzerinde çalışmalıdır. Kesinlikle grep kadar güçlü değil, ama findsizin için temel dize yapacak. Tabii ki, php -i çıktısını stderr'a dökerse, muhtemelen SOL'sunuzdur.
Marc B

2
findvarsayılan olarak büyük / küçük harf duyarlıdır, bu nedenle mükemmel ( php -i | find "Configuration File") veya büyük / küçük harfe duyarlı olmamalıdır ( php -i | find /i "Configuration file"- /ibayrağa dikkat edin ).
deizel

9
php --iniAlternatif olarak eklemeyi düşünün ; PHP
5.2.3'ten

2
Kimse php_ini_loaded_file çağırarak ve gerektiğinde php_ini_scanned_files
Radek Benkel 28:12

16

Bunun için get_cfg_var ('cfg_file_path') kullanabilirsiniz :

Sistemin bir yapılandırma dosyası kullanıp kullanmadığını kontrol etmek için cfg_file_path yapılandırma ayarının değerini almayı deneyin. Bu mevcutsa, bir yapılandırma dosyası kullanılmaktadır.
Phpinfo () aksine bir php.ini hiç bulamadı / kullanmazsa söyleyecektir.

var_dump( get_cfg_var('cfg_file_path') );

Ve sadece php.ini dosyasının konumunu ayarlayabilirsiniz . Komut satırı sürümünü kullanıyorsunuz, bu nedenle -cparametreyi kullanarak konumu belirtebilirsiniz, örn.

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

13

php --iniTerminalinizde çalıştırın , ini dosyaları hakkında tüm ayrıntıları alacaksınız

[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

Daha fazla bilgi için yardım komutunu kullanın php --helpOlası tüm seçenekleri görüntüler.


8

Somtimes, genel olarak yapılandırma dosyaları söz konusu olduğunda her zaman göründüğü gibi değildir. Burada, bir işlem tarafından hangi dosyaların açıldığını keşfetmek için her zamanki yöntemlerimi uyguluyorum.

Sırtımın arkasında gerçekten neler olduğunu göstermek için strace adlı çok güçlü ve kullanışlı bir komut satırı programı kullanıyorum !

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

Strace, programınızın yaptığı ve (-o ile belirtilen dosyaya çıktıyı döküldüğü) çekirdek (sistem) çağrılarını kazar

Bu günlükte php.ini oluşumlarını aramak için grep'i kullanmak kolaydır . Neler olup bittiğini görmek için aşağıdaki tipik yanıta bakmak oldukça açıktır.

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 -ibana yanlış sonuçlar verdi, ama bu gayet iyi. Teşekkür ederim!
Dmitry Ginzburg

7

Tüm yapılandırma dosyalarının yüklenmesini istiyorsanız, bu size şunları söyleyecektir:

php -i | grep "\.ini"

Bazı sistemler birden fazla ini dosyasından bir şeyler yükler. Ubuntu sistemimde şöyle görünüyor:

$  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'te çalışıyor:

$ php -i | grep 'Configuration File'

İade:

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

Dizinde /etc/şunlar vardı:

php.ini.default

(yanı sıra php-fpm.conf.default)

Ben kopyalamak başardı php.ini.defaultiçin php.ini, eklemek date.timezone = "US/Central"üst (sağ aşağıda [php]) ve sorun çözüldü.

(En azından hata mesajı gitti.)


5

Başka bir uygulamaya geçirmeniz gerekiyorsa, aşağıdakine benzer bir şey yapabilirsiniz:

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

yalnızca yolu döndürür. php -c $(php --ini | grep Loaded | cut -d" " -f12)yapılandırma dosyasına geçecek (için yararlı fpm)


3

EasyPHP kullandığımda hatırladığım kadarıyla php.ini dosyası ya C:\Windows\daC:\Windows\System32


2
Doğru bana C: \ WINDOWS diyor. Ama orada ciddi bir şekilde bulamadım!
Amokrane Chentir

2

Yapmak

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

Bu, adlandırılan tüm dosyaların çıktısını verecektir php.ini.

Hangisini kullandığınızı öğrenin, genellikle apache2/php.ini


Hiçbir php.ini dosyası (bazı docker kapsayıcılar) yoksa bu çalışmaz. Bu nedenle kabul edilen cevap daha uygundur.
Manuel Manhart

myyyyyyyyyy adam
doktor tatil

@emilioestevez * kadın
willsmanley

1

Php.ini dosyanızda, uzantı dizininizi ayarlayın, örneğin:

extension_dir = "C:/php/ext/"

PHP klasöründe tüm dll ve uzantıları ile bir ext klasörü olduğunu göreceksiniz.


0

CLI phpinfo çıktısını yerel dosyaya kaydedin:

php -i >> phpinfo-cli.txt

0

Docker kapsayıcısında phpmyadmin / phpmyadmin php.ini dosyası yok. Ancak iki dosya vardır: php.ini-debug ve php.ini-production

Sorunu çözmek için, dosyalardan birini php.ini olarak yeniden adlandırın ve docker kapsayıcısını yeniden başlatın.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.