명령 행에서 사용하는 php.ini 파일을 찾는 방법?


389

EasyPhp 환경에서 pdo_mysql을 활성화해야하므로 php.ini 파일로 이동하여 다음 줄의 주석 처리를 제거했습니다.

extension=php_pdo_mysql.dll

불행히도 여전히 같은 문제가 있습니다. CLI를 사용하고 있으므로 CLI에서 사용하는 php.ini 파일을 찾아야한다고 가정합니다. 어떻게 찾을 수 있습니까?



@ sjas 그것은 잘못된 것이 아닙니다. 정확하고 cli에로드 된 php.ini의 경로를 알려주십시오.
SaidbakR

답변:


951

CLI 에서 사용 하는 위치 php --ini를 실행 하고 Loaded Configuration File출력을 찾으 php.ini십시오.


5
@Mchl 나는 당신을 찬성하지만, grep으로 답을 게시해야한다고 생각합니다.
Jim W.

9
@BradFJacobs 왜 이것이 크로스 플랫폼 일 때 grep을 사용합니까?
Garet Claborn

그러나 이것은 CLI를 통해 PHP를 사용할 때로 드 된 것을 보여주지는 않습니다 (명령을 실행하기 때문에).
Antony D' Andrea

1
@ AntonyD'Andrea : 정확히 질문에 관한 것입니다. 보다? 그것은 제목에도 나와 있습니다 : 명령 줄에서 사용하는 php.ini 파일을 찾는 방법은 무엇입니까?
Mchl

이것은 나의 경우 I 형에 ... 내 대답하지 않습니다 sudo find / -iname php.ini그것은 세운 /etc/php/7.0/apache2/php.ini이 발견되지 않았 음을 내 컴퓨터의 오른쪽 php.ini의 설정 파일의 올바른 위치를 php --ini하거나 php -i | grep php.ini(모두 FOUND /etc/php/7.0/cli/php.ini)
NineCattoRules

366

다음을 phpinfo()사용하여 전체 를 얻을 수 있습니다 .

php -i 

그리고 거기에 php.ini사용 된 파일이 있습니다.

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

Windows에서는 find대신 사용하십시오.

php -i|find/i"configuration file"

12
그런 다음이 PHP 인스턴스는 기본값을 제외한 php.ini를 전혀 사용하지 않았습니다. Configuration File은 phpinfo의 라인 () PHP는 INI 파일을보고 마지막 장소를 보여줍니다. 그것은 그러한 파일을 찾은 곳이거나 Windows에서 % SYSTEMROOT %가되는 마지막 옵션 일 수 있습니다.
VolkerK

2
@pascal : php -i | find "Configuration file"Windows에서 작동합니다. grep만큼 강력하지는 않지만 find기본 문자열 검색을 수행합니다. 물론 php -i가 출력을 stderr에 덤프하면 아마도 SOL 일 것입니다.
Marc B

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
Radek Benkel

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

자세한 내용은 help 명령을 사용 php --help하십시오. 가능한 모든 옵션이 표시됩니다.


8

Somtimes는 일반적으로 구성 파일과 관련하여 항상 보이는 것은 아닙니다. 그래서 여기에서는 프로세스가 여는 파일을 탐색하기 위해 일반적인 방법을 적용하고 있습니다.

나는 strace 라는 매우 강력하고 유용한 명령 줄 프로그램을 사용하여 실제로 내 뒤에서 일어나는 일을 보여줍니다!

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

Strace는 프로그램이 수행 한 커널 (시스템) 호출을 찾아서 출력을 -o로 지정된 파일로 덤프합니다.

grep 을 사용 하여이 로그에서 php.ini의 발생을 쉽게 검색 할 수 있습니다 . 무슨 일이 일어나고 있는지 알기 위해 다음과 같은 전형적인 반응을 보는 것이 분명합니다.

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나에게 잘못된 결과를 주었지만 이것은 완벽하게 좋습니다. 감사합니다!
Dmitry Ginzburg 2016 년

7

모든 구성 파일을로드하려면 다음과 같이 알려줍니다.

php -i | grep "\.ini"

일부 시스템은 둘 이상의 ini 파일에서 항목을로드합니다. 내 우분투 시스템에서는 다음과 같습니다.

$  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.defaultphp.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입니다. 그러나 나는 그것을 심각하게 찾지 못했습니다!
Amokrane Chentir

2

하다

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

그러면 이름이 지정된 모든 파일이 출력됩니다 php.ini . 인 .

일반적으로 사용중인 것을 찾으십시오. apache2/php.ini


php.ini 파일 (일부 도커 컨테이너)이 없으면 작동하지 않습니다. 따라서 허용 된 답변이 더 적합합니다.
Manuel Manhart

myyyyyyyyyy 남자
문서 휴일

@emilioestevez * 여자
willsmanley

1

php.ini 파일에서 확장 디렉토리를 설정하십시오 (예 :

extension_dir = "C:/php/ext/"

PHP 폴더에는 모든 dll 및 확장자가있는 ext 폴더가 있습니다.


0

CLI phpinfo 출력을 로컬 파일에 저장하십시오.

php -i >> phpinfo-cli.txt

0

docker container phpmyadmin / phpmyadmin에 php.ini 파일이 없습니다. 그러나 php.ini-debug와 php.ini-production의 두 파일이 있습니다

문제를 해결하려면 파일 중 하나의 이름을 php.ini로 바꾸고 docker container를 다시 시작하십시오.


-4

명령 행에서 사용되는 php.ini가 없습니다. 당신은에서 파일을 복사해야 ...EasyPHP-<<version>>\apache\php.ini 하는 ...EasyPHP-<<version>>\php\php.ini것보다 편집에서 하나 의 PHP 디렉토리를

참고:

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.