2018年5月9日 星期三

php7.2連Sybase資料庫

環境:
OS:Ubuntu 18.04 Server
Apache2.4
PHP7.2

因PHP7.0以後無sybase相關function,需透過freetds為連線介接,再使用PDO相關function進行連線。
1. 安裝相關套件
sudo apt install php7.2-sybase
2.設定freetds
sudo vim /etc/freetds/freetds.conf [global]
        client charset = UTF-8
        charset = utf8

[sybase_db]
        host = db.com.tw
        port = 5000
        tds version = 5.0

3. 使用PDO function測試是否連線成功。
<?php
$db_host = "sybase_db";
$db_user = "帳號";
$db_pass = "密碼";
$db_select = "dbname";

$dbconnect = "dblib:host=".$db_host.";dbname=".$db_select;
$pdo_sybase = new PDO($dbconnect, $db_user, $db_pass);

$sql = "select * from sybase_table where 1=1";
$res = pdo_sybase->query($sql);
        while ($row = $res->fetch()){
                print_r($row);
        }
?>

Ubuntu 停用IPv6或以IPv4連線優先

環境:
OS:Ubuntu 18.04 Server

在預設狀況下,ipv4、ipv6是同時啟用的,但常發現會優先使用ipv6連線時連線很慢,等到ipv6無法連線時,才會改為ipv4連線,在這過程中已經浪費一些時間。改善此狀況有下列兩種方式。

方式一:停用ipv6,此方法網路上很多說明,但個人並不建議用此方法。
1. 編輯 sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX="ipv6.disable=1"     #修改此行
2. 執行 sudo update-grub2
3. 重開機後以ifconfig 檢查是否關閉ipv6

方式二:以ipv4優先,此方法較理想,不需停用ipv6。
1. 編輯 sudo vim /etc/gai.conf
#For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96  100      #移除此行註解

2. ping google.com.tw 檢查是否以ipv4連線