PHP 에서 json 문자열을 예쁘게 출력하려면

프로그래밍/PHP|2021. 11. 11. 15:18
반응형

아래와 같이 header 에 json 타입을 명시해주고  json 문자열을 JSON_PRETTY_PRINT 옵션을 주어 decode, encode 하면 됩니다.

 

sysdocu.php

<?
header('Content-Type: application/json');    // 필수

$data = '{ "result": "success", "data":[ { "ip": "192.168.10.2", "os": "linux" }, { "ip": "192.168.10.3", "os": "windows" } ] }';

$result = json_encode(json_decode($data), JSON_PRETTY_PRINT);

echo $result;
?>

 

결과

{
    "result": "success",
    "data": [
        {
            "ip": "192.168.10.2",
            "os": "linux"
        },
        {
            "ip": "192.168.10.3",
            "os": "windows"
        }
    ]
}

 

반응형

댓글()

[에러] (13)Permission denied: [client ...] AH00035: access to ... denied ... because search permissions are missing on a component of the path

리눅스/APACHE|2021. 11. 8. 16:23
반응형

아파치 에러 로그

[Mon Nov 08 16:04:03.287735 2021] [core:error] [pid 7206] (13)Permission denied: [client 192.168.220.104:41978] AH00035: access to /test.php denied (filesystem path '/RESTAPI/html/test.php') because search permissions are missing on a component of the path

 

디렉토리와 파일 접근 권한은 있는데 위와 같이 에러로그가 남을 경우 해결 방법입니다.

 

 

점검

/var/log/audit/audit.log 로그 파일을 열어 아래 내용이 출력되었는지 살펴봅니다.

 

type=AVC msg=audit(1636355741.333:1432): avc:  denied  { getattr } for  pid=8010 comm="httpd" path="/RESTAPI/logs/test.php" dev="sda2" ino=9568262 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file permissive=0
type=SYSCALL msg=audit(1636355741.333:1432): arch=c000003e syscall=6 success=no exit=-13 a0=7ffe0fa1c170 a1=7ffe0fa1c050 a2=7ffe0fa1c050 a3=ffffff00 items=0 ppid=8007 pid=8010 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
type=PROCTITLE msg=audit(1636355741.333:1432): proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44

 

 

해결

# chcon -R -t httpd_sys_content_t /RESTAPI/html

 

반응형

댓글()

PHP 와 MySQL 연동 확인 소스

프로그래밍/PHP|2021. 11. 8. 13:40
반응형

아래는 MySQL 연결이 잘 되었는지 확인하는 소스 입니다.

PHP 8.0, MySQL 8.0 에서 테스트 시 정상 동작 하는것 확인했습니다.

 

# vi dbtest.php

<?php
$conn = mysqli_connect("192.168.2.10", "sysdocu", "12345678", "sysdocudb");
 
if ($conn) {
    echo "MySQL 연결 성공";
} else {
    echo "MySQL 연결 실패";
}
 
$result = mysqli_query($conn, "SELECT VERSION() AS VERSION");
$data = mysqli_fetch_assoc($result);
echo "<br>Version : " . $data['VERSION'];
?>

 

 

추가로 데이터를 가져오는 방법입니다.

한개 행의 데이터를 가져올때는 이런 식으로 사용하고,

 

$sql = "SELECT * FROM members WHERE id='$id' AND passwd='$passwd'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$name = $row['name'];

$id = $row['id'];

$passwd = $row['passwd'];

여러 행의 데이터를 가져올때는 while 문을 사용합니다.

 

$sql = "SELECT * FROM members WHERE id='$id' AND passwd='$passwd'";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_array($result)) {

        $name = $row['name'];
        $id = $row['id'];
        // 반복 출력
        echo $name . "<br>";
        echo $id . "<br>";
}

 

 

 

반응형

댓글()

Install MySQL 8.0 (yum) with Galera cluster in CentOS 7

리눅스/MySQL|2021. 11. 8. 10:48
반응형

CentOS 7 에서 MySQL 8.0 과 Galera 4 버전을 설치하고 cluster 설정을 해보았습니다.

아래는 간략히 설치하고 설정하는 방법만 기술하였습니다.

 

 

1. 설치

 

서버 두대에 동일하게 설치를 진행합니다.

 

# vi /etc/yum.repos.d/galera.repo

[galera]
name = Galera
baseurl = https://releases.galeracluster.com/galera-4.9/centos/7/x86_64
gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1

[mysql-wsrep]
name = MySQL-wsrep
baseurl = http://releases.galeracluster.com/mysql-wsrep-8.0.25-26.7/centos/7/x86_64/
gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1

# yum -y install galera-4 mysql-wsrep-8.0

 

 

2. 사용자 생성 및 권한 부여

 

(마스터 노드 192.168.200.105 에서만)

계정 생성을 위해 mysqld 를 우선 가동해줍니다.

 

# systemctl start mysqld

 

# mysql -p

Enter password: (root 패스워드 입력 후 엔터) // 초기 root 패스워드는 로그파일에 기록되어 있습니다. (/var/log/mysqld.log)

 

최초 패스워드로 로그인하면 새로운 패스워드로 변경 전까지 일반 작업은 불가능합니다. 아래와 같이 변경 해줍니다.

mysql> alter user 'root'@'localhost' identified by '12345678'; 

mysql> flush privileges;

 

두 서버간 동기화를 담당할 계정 galera 를 생성합니다. 계정명은 무엇이든 상관 없습니다.

mysql> CREATE USER 'galera'@'localhost' IDENTIFIED WITH caching_sha2_password BY '12345678';

mysql> GRANT ALL PRIVILEGES ON *.* TO 'galera'@'localhost'; 
mysql> GRANT GRANT OPTION ON *.* TO 'galera'@'localhost'; 
mysql> flush privileges;

 

 

3. 설정

 

두 노드의 설정 방법이 약간 다릅니다. 파란색 글자를 유의해서 설정합니다.

 

(마스터 노드 192.168.200.105 에서)

# systemctl stop mysqld

 

# vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 여기에서부터 추가
user=mysql
bind-address="0.0.0.0"
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=2G
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.200.105,192.168.200.106"
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M;"
wsrep_cluster_name="cluster"
wsrep_node_name="db1"
wsrep_node_address="192.168.200.105"
wsrep_sst_method="clone"
wsrep_sst_auth="galera:12345678"

설정 후 galera cluster 기능을 사용하는 mysqld 를 최초 가동 합니다. 

# mysqld_bootstrap --wsrep-new-cluster

 

(슬레이브 노드 192.168.200.106 에서)

# vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 여기에서부터 추가
user=mysql
bind-address="0.0.0.0"
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=2G
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.200.105,192.168.200.106"
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M;"
wsrep_cluster_name="cluster"
wsrep_node_name="db2"
wsrep_node_address="192.168.200.106"
wsrep_sst_method="clone"
wsrep_sst_auth="galera:12345678"

저장 후 일반적인 가동만 해주면 설정되어진 값으로 자동 동기화가 이루어집니다.

# systemctl start mysqld

 

 

4. 확인

쿼리로 직접 데이터 입력해보는 방법과 mysql 상태값을 확인하는 방법이 있습니다.

 

1) 마스터 서버에서 DB 를 생성하면 슬레이브 서버에서도 확인이 가능

mysql> create database sysdocu;

mysql> show databases;

 

2) galera cluster 설정 상태 확인

mysql> show variables like '%wsrep_cluster%';
+-------------------------+-----------------------------------------+
| Variable_name           | Value                                   |
+-------------------------+-----------------------------------------+
| wsrep_cluster_address   | gcomm://192.168.220.105,192.168.220.106 |
| wsrep_cluster_name      | cluster                                 |
| wsrep_cluster_server_id | 1                                       |
+-------------------------+-----------------------------------------+

 

 

반응형

댓글()

PHP - cUrl를 이용해 PUT, POST, GET으로 json을 전달하는 방법

리눅스/PHP|2021. 10. 22. 09:00
반응형

Rest API를 구축하였다면 PHP를 사용하여 curl로 json 문자열을 주고 받을 수 있어야 합니다. 그것은 아마도 POST 가 될 수 있고, GET 또는 PUT 이 될 수 있습니다.

curl 은 가장 보편적인 방법이며 PHP 는 간단한 방법이 될 수 있습니다.


PUT 방식

<?php
$url = 'https://example.com';
$data = '{"key": "value"}';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response  = curl_exec($ch);

curl_close($ch);
?>

 

GET 방식 

<?php
$url = 'https://example.com';
$data = '{"key": "value"}';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response  = curl_exec($ch);

curl_close($ch);
?>


POST 방식

<?php
$url = 'https://example.com';
$data = '{"key": "value"}';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response  = curl_exec($ch);

curl_close($ch);
?>

 

DELETE 방식 

<?
$url = 'https://example.com';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');

$response  = curl_exec($ch);

curl_close($ch);
?>

 

다음은 인증을 위해 헤더를 추가하는 방법입니다.

<?php
$url = 'https://example.com';
$data = '{"key": "value"}';
// 인증용 사용자 및 비밀번호
$auth = 'yourname:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
// 기본 인증 헤더 설정
curl_setopt($ch, CURLOPT_USERPWD, $auth);
$response  = curl_exec($ch);

curl_close($ch);
?>

 

위 코드를 정리해서 아래와 같이 함수를 만들어 사용할 수 있습니다.

<?php
function restAPI($method = 'POST', $url, $data = null, $auth = null)
{
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  if($method == 'POST')
  {
    curl_setopt($ch, CURLOPT_POST, 1);
  }
  if(strlen($auth) > 0)
  {
    curl_setopt($ch, CURLOPT_USERPWD, $auth);
  }
  if(strlen($data) > 0)
  {
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
  }

  $response  = curl_exec($ch);
  curl_close($ch);

  return $response;
}

$url = 'https://example.com';
$data = '{"key": "value"}';
$auth = 'yourname:password';


// POST
$rest = restAPI('POST', $uri, $data, $auth);

// GET
$rest = restAPI('GET', $uri, $data, $auth);

// PUT
$rest = restAPI('PUT', $uri, $data, $auth);

// DELETE
$rest = restAPI('DELETE', $uri);
?>

 

[출처] https://www.habonyphp.com/2021/07/php-curl-put-post-get-json.html

반응형

댓글()

CentOS 7 에서 PHP 8.0 설치하기

리눅스/PHP|2021. 10. 19. 08:00
반응형

간단히 yum 명령으로 설치가 가능합니다.

 

# yum -y install epel-release
# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum -y install php80 php80-php php80-php-mbstring php80-php-pdo php80-php-mysqlnd php80-php-gd php80-php-xml php80-php-fpm

 

이후 필요에 따라 php.ini 를 수정해 줍니다.

php.ini 파일은 아래에 있습니다.

 

# vi /etc/opt/remi/php80/php.ini

 

short_open_tag = On

date.timezone = "Asia/Seoul"

 

반응형

댓글()

CentOS 7 에 MySQL 8.0 설치 (rpm), 사용자 생성 및 권한 주기 (SHA256 암호 적용)

리눅스/MySQL|2021. 10. 18. 11:12
반응형

1. 설치

아래와 같이 간단히 설치가 가능합니다.

# yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# yum install -y mysql-server

 

설치한 mysql 을 구동합니다.

# systemctl start mysqld

 

버전을 확인해 봅니다.

# mysql -V
mysql  Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)

 

 

2. 초기 root 비밀번호 

초기 root 패스워드는 mysqld 데몬을 처음 구동한 시점에 로그파일에 남게 됩니다.

아래와 같이 확인 후 로그인하여 패스워드를 반드시 변경 해야 합니다.

(패스워드 변경 전, 일반 쿼리 사용 불가)

 

# cat /var/log/mysqld.log |grep root |sed -e 's/.* //'

(root 패스워드 출력)

# mysql -p

Enter password: (root 패스워드 입력)

 

아래와 같이 새 패스워드로 변경합니다.

mysql> alter user 'root'@'localhost' identified with caching_sha2_password by '12345678';

mysql> flush privileges;

 

 

3. 사용자 생성 (SHA256 암호방식 & 구 암호방식)

MySql 8.0의 기본 인증 플러그인은 caching_sha2_password 로 변경 되었습니다.

계정생성시 SHA256 패스워드 적용 방법은 아래와 같습니다.

 

mysql> create user 'sysdocu'@'localhost' identified with caching_sha2_password by '12345678';

mysql> flush privileges;

 

* 참고 (구 패스워드 방식으로 생성)

mysql> create user 'sysdocu'@'localhost' identified with mysql_native_password by '12345678';

mysql> flush privileges;

 

 

4. 사용자 권한 (DB 접근 권한 부여)

생성한 sysdocu 사용자로 접근하고 싶은 DB 명을 명시해줍니다. 아래는 sysdocu DB 접근 예시입니다.

mysql> grant all privileges on sysdocu.* to 'sysdocu'@'localhost'; 
mysql> grant grant option on sysdocu.* to 'sysdocu'@'localhost'; 

mysql> flush privileges;

 

반응형

댓글()

PHP에서 JSON 배열 삭제

프로그래밍/PHP|2021. 10. 15. 15:39
반응형

PHP를 사용하여 JSON 파일에서 배열을 삭제하려고합니다.

PHP를 사용하여 배열 삭제를 설정하는 방법을 잘 모르겠습니다. jQuery 측면을 처리 할 수 ​​있습니다.

프론트 엔드에서 버튼을 클릭하면 해당 배열이 삭제됩니다.

  1. <button id="harry_0123">harry_0123</button>
  2. <button id="ben_0124">ben_0124</button>
  3.  

다음은 JSON 파일의 예입니다.

  1. {
  2. "harry_0123": {
  3. "id": "0123",
  4. "name": "harry",
  5. },
  6. "ben_0124": {
  7. "id": "0124",
  8. "name": "ben",
  9. },
  10. }
  11.  

다음은 PHP 예제입니다 :

  1. <?php
  2. $json_str = file_get_contents('doc/info.json');
  3.  
  4. $json_arr = json_decode($json_str, true);
  5.  
  6. if(!$json_arr) {
  7. $json_arr = array();
  8. }
  9. $json_str_done = json_encode($json_arr, JSON_PRETTY_PRINT);
  10. file_put_contents('doc/info.json', $json_str_done);
  11.  

 

[출처] https://www.python2.net/questions-1051494.htm

 

반응형

댓글()

PHP 에서 json 형식의 다차원 배열 값 읽고 출력하기

프로그래밍/PHP|2021. 10. 5. 07:25
반응형

PHP 에서 JSON 데이터를 파싱하는 방법이다.

JSON 데이터는 Local File 을 읽어오는 것과 Web 사이트에서 해당 URL 을 읽어오는 방법이 있다.

가장 먼저 파싱해야 할 데이터 형태 파악을 하는 코드부터 살펴보고자 구글링을 했더니 관련 코드가 있어서 주석을 좀 더 추가하고 이해를 돕는 걸 첨가하여 적어둔다.

 

 <?php
// Web JSON 파일 읽어오기
$url = 'http://ip주소/getFileList.php';
$json_string = file_get_contents($url);

// Local JSON 파일 읽어오기
//$json_string = file_get_contents('weather.json');
// 다차원 배열 반복처리
$R = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($json_string, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);
// $R : array data
// json_decode : JSON 문자열을 PHP 배열로 바꾼다
// json_decode 함수의 두번째 인자를 true 로 설정하면 무조건 array로 변환된다.

foreach ($R as $key => $val) {
    if(is_array($val)) { // val 이 배열이면
        echo "$key:<br/>";
        //echo $key.' (key), value : (array)<br />';
    } else { // 배열이 아니면
        echo "$key => $val <br />";
    }
}
?>

 

위 코드로 형태파악을 한 다음에 필요한 것을 파싱처리하면 된다.

 

Local JSON 파일을 읽어서 처리하는 걸 예제로 보자.

 [
    {
        "firstName": "길동",
        "lastName": "홍",
        "email": "jdhongv@gmail.com",
        "mobile": "010-1234-1111"
    },
    {
        "firstName": "민아",
        "lastName": "김",
        "email": "minakim@gmail.com",
        "mobile": "010-1234-3333"
    },
    {
        "firstName": "진주",
        "lastName": "마",
        "email": "jjmah@gmail.com",
        "mobile": "010-1234-5555"
    },
    {
        "firstName": "서영",
        "lastName": "이",
        "email": "sylee@gmail.com",
        "mobile": "010-1234-7777"
    }
]

 

<?php
// Local JSON 파일 읽어오기
$json_string = file_get_contents('data.json');
$R = json_decode($json_string, true);
// json_decode : JSON 문자열을 PHP 배열로 바꾼다
// json_decode 함수의 두번째 인자를 true 로 설정하면 무조건 array로 변환된다.
// $R : array data



foreach ($R as $row) {
    print $row['lastName'];
    print $row['firstName'];
    print ' , ';
    print $row['email'];
    print ' , ';
    print $row['mobile'];
    print '<br />';
}
?> 

 

결과

홍길동 , jdhongv@gmail.com , 010-1234-1111
김민아 , minakim@gmail.com , 010-1234-3333
마진주 , jjmah@gmail.com , 010-1234-5555
이서영 , sylee@gmail.com , 010-1234-7777

 

조금 더 복잡한 JSON 파일을 검색한 걸 테스트한다.

{
    "name": "홍길동",
    "alias": "LInk",
    "members": [
        "소원",
        "예린",
        "은하",
        "유주",
        "신비",
        "엄지"
    ],
    "albums": {
        "EP 1집": "Season of Glass",
        "EP 2집": "Flower Bud",
        "EP 3집": "Snowflake",
        "EP 4집": "THE AWAKENING"
    }
}

 

파싱하는 코드를 두가지로 테스트해보면 print_r 에서 결과를 다르게 보여준다.

<?php
// JSON 파일 읽어오기
$json_string = file_get_contents('weather.json');
// 다차원 배열 반복처리
$R = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($json_string, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);
// $R : array data
// json_decode : JSON 문자열을 PHP 배열로 바꾼다
// json_decode 함수의 두번째 인자를 true 로 설정하면 무조건 array로 변환된다.

print_r($R);
echo '<br />';

foreach ($R as $key => $val) {
    if(is_array($val)) {
        echo "$key:<br/>";
    } else {
        echo "$key => $val<br/>";
    }
}
?>
<?php
// Local JSON 파일 읽어오기
$json_string = file_get_contents('weather.json');
$R = json_decode($json_string, true); //
// $R : array data
// json_decode : JSON 문자열을 PHP 배열로 바꾼다
// json_decode 함수의 두번째 인자를 true 로 설정하면 무조건 array로 변환된다.

print_r($R); // 배열 요소를 출력해준다.
echo '<br />';
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>PHP JSON parser sample</title>
    </head>

    <body>
        <h3 id="gname">
        <?php
            echo $R['name'];
            if (array_key_exists('alias', $R))
                printf(" (%s)", $R['alias']);
        ?>
        </h3>
        <p>멤버 구성: <span id="members">
            <?php echo implode(', ', $R['members']);?></span>
        </p>
        <h3>앨범 목록</h3>
        <ul id="albums">
        <?php
            foreach ($R['albums'] as $key => $value) {
                printf("<li>%s: %s</li>\n", $key, $value);
            }
            ?>
        </ul>
    </body>
</html>


출처: https://link2me.tistory.com/1408 [소소한 일상 및 업무TIP 다루기]

 

참고 : 배열에 배열 추가


$arrs = array();                  // 전체 배열을 준비하고
array_push($arrs, $arr)); //$arr 배열을 배열에 넣는다 (다차원 배열)

반응형

댓글()

Ubuntu 18.04 LTS 한글 사용하기 (한글 적용)

리눅스/OS 일반|2021. 8. 6. 10:33
반응형

기본적으로 ubuntu 18.04를 설치할때 혹시나 발생할 오류를 막기 위하여 영어 버전으로 설정하고, 위치는 서울로 설정한 뒤 설치를 진행한다.

 

그래서 그런지 몰라도, 처음에는 한글 입력이 되지 않는다. 이를 해결하기 위해서 첫번째로 아래와 같이 언어 정보를 다운받는다.

 

사진처럼 Settings -> Region&Language -> Manage Installed Languages -> Install/Remove Language...

를 하면 사진의 왼쪽 위처럼 Applying changes가 진행된다.

 

 

위의 과정이 완료되면, Language에 korean이 추가된 것을 볼 수 있다. 하지만!!!! 내가 여러번 해본 결과 여기서 reboot를 한번 해줘야 한다.

 

& reboot

 

재부팅이 되고 나면 터미널 창에 다음과 같이 입력하고, Input Method -> Add -> ... -> Korean -> Hangul 을 추가한다.

 

& ibus-setup

 

 

다음으로 Settings -> Region&Language -> Add an Input Source 에서 Korean(Hangul)을 추가해준다.

 

 

다음으로 한영키 사용을 위하여 톱니바퀴를 클릭하여 키 추가를 해준다. 

 

여기서 start in Hangul mode 까지 체크 해준다음 저장한다. 만약 안된다면, 재부팅을 진행하거나, 댓글 달아주시기 바랍니다.

 

[출처] https://greedywyatt.tistory.com/105

반응형

댓글()

PHP 에서 MySQL 데이터 불러오기 두가지 (한줄, 여러줄)

프로그래밍/PHP|2021. 7. 22. 14:43
반응형

[ 레코드가 한줄일때 ]

 

$conn = mysqli_connect('localhost', 'sysdocu', '12345678', 'sysdocuDB');

$query = "SELECT AVG(age) AS AVG FROM list";
$result = mysqli_query($conn, $query);
$one = mysqli_fetch_array($result);

echo $one['AVG'];

 

 

[ 레코드가 여러줄일때 ] 

 

$conn = mysqli_connect('localhost', 'sysuser', '12345678', 'sysdb');

$query = "SELECT code FROM list";
        if ($result = mysqli_query($conn, $query)) {
                while ($row = mysqli_fetch_row($result)) {
                              echo $row[0];
                              echo $row[1];

                              echo $row[2];

                }
        }

 

반응형

댓글()