작은숲:위키노트/PHP mysqli options: 두 판 사이의 차이
잔글 (문자열 찾아 바꾸기 - "</source>" 문자열을 "</syntaxhighlight>" 문자열로) |
|||
| 1번째 줄: | 1번째 줄: | ||
{{DISPLAYTITLE:PHP mysqli_options}} | {{DISPLAYTITLE:PHP mysqli_options}} | ||
[[위키노트 | [[작은숲:위키노트/PHP|PHP]]에서 <tt>mysqli</tt>로 [[작은숲:위키노트/MySQL|MySQL]] 데이터베이스 접속할 때 필요한 설정들을 [[작은숲:위키노트/.my.cnf|.my.cnf]]와 같은 형식의 설정 파일에 저장해놓고 쓸 수 있다. | ||
<syntaxhighlight lang="cfg"> | <syntaxhighlight lang="cfg"> | ||
[client] | [client] | ||
| 9번째 줄: | 9번째 줄: | ||
default-character-set = utf-8 | default-character-set = utf-8 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
이렇게 작성된 설정 파일은 PHP의 <code>[[위키노트 | 이렇게 작성된 설정 파일은 PHP의 <code>[[작은숲:위키노트/PHP:mysql_options|mysql_options()]]</code> 함수를 써서 접속할 때 사용한다. | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
$sql = mysqli_init(); | $sql = mysqli_init(); | ||
| 16번째 줄: | 16번째 줄: | ||
mysqli_real_connect($sql); | mysqli_real_connect($sql); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
하지만 이 경우 password 지시자의 값을 제대로 읽어오지 못하는데 이건 버그라고 알려져 있으며 아직 수정되지 않은 상태이다. 따라서 PHP 소스에 MySQL 접속 비밀번호를 직접 쓰지 않고 설정 파일을 쓰려면 <code>[[위키노트 | 하지만 이 경우 password 지시자의 값을 제대로 읽어오지 못하는데 이건 버그라고 알려져 있으며 아직 수정되지 않은 상태이다. 따라서 PHP 소스에 MySQL 접속 비밀번호를 직접 쓰지 않고 설정 파일을 쓰려면 <code>[[작은숲:위키노트/PHP:parse_ini_file|parse_ini_file()]]</code> 함수를 쓴다. | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
$opts = parse_ini_file('/path/to/my.cnf'); | $opts = parse_ini_file('/path/to/my.cnf'); | ||
2022년 5월 7일 (토) 13:37 판
PHP에서 mysqli로 MySQL 데이터베이스 접속할 때 필요한 설정들을 .my.cnf와 같은 형식의 설정 파일에 저장해놓고 쓸 수 있다.
[client]
host = localhost
user = someone
password = simplepassword
database = sample
default-character-set = utf-8
이렇게 작성된 설정 파일은 PHP의 mysql_options() 함수를 써서 접속할 때 사용한다.
$sql = mysqli_init();
mysql_options(MYSQLI_READ_DEFAULT_FILE, '/path/to/my.cnf');
mysql_options(MYSQLI_READ_DEFAULT_GROUP, "client");
mysqli_real_connect($sql);
하지만 이 경우 password 지시자의 값을 제대로 읽어오지 못하는데 이건 버그라고 알려져 있으며 아직 수정되지 않은 상태이다. 따라서 PHP 소스에 MySQL 접속 비밀번호를 직접 쓰지 않고 설정 파일을 쓰려면 parse_ini_file() 함수를 쓴다.
$opts = parse_ini_file('/path/to/my.cnf');
$sql = mysqli_init();
mysqli_real_connect($sql, $opts['host'], $opts['user'], $opts['password'], $opts['database']);
참고
- (영어) 'password' parameter in my.cnf not honored even with mysqli_options()
- (영어) MySQL won't read password from configuration file
| PHP 7.0 | |
|---|---|
| PHP 5.6 | |
| PHP 5.5 | |
| 확장 기능 | |
| 활용 | |
| 소프트웨어 | |
| 설정과 문제 해결 | |
|---|---|
| 활용 | |