2020-08-31

linux 上 單引號Single Quotes 中的文字要使用 單引號時 Single Quotes ,要用 ' \ ' ' 來實現

 linux 上 單引號Single Quotes 中的文字要使用 單引號時 Single Quotes ,要用 ' \ ' '  來實現

例如 要 echo  出 don't do it

不能使用 

echo 'don\'t do it' 

要使用

echo 'don'\''t do it'

其它參考

$ echo 'abc'\''abc'

abc'abc

$ echo "abc"\""abc" 

abc"abc 

$ echo 'abc'"'"'abc'

abc'abc

$ echo "abc"'"'"abc"

abc"abc

2020-04-16

ubuntu 18.4 上使用 php7 透過 FreeTDS , ODBC 連 mssql 2000

1.安裝 FreeTDS ,ODBC
sudo apt-get install freetds-bin freetds-common tdsodbc odbcinst unixodbc unixodbc-dev
sudo mv /etc/odbcinst.ini /etc/odbcinst.ini.bak
sudo cp /usr/share/tdsodbc/odbcinst.ini /etc/
2.測試 是否可連 mssql
tsql -H my_server_host -p 1433 -U my_user -P my_password -D my_database
3.安裝 php7.x odbc 如 7.2 時
sudo apt-get install php7.2-odbc
4. php 上測試
try {

//connection params
$dbCon = new PDO('odbc:Driver=FreeTDS; Server=my_server_host; Port=1433; Database=my_database; TDS_Version=8.0; ClientCharset=UTF-8', 'my_login', 'my_pass');

//test query
$result = $dbCon->query('SELECT TOP 10 * FROM dbo.my_table');

//show the results
foreach ($result as $row)
{
print_r( $row );
}

//close the connection
$dbCon = null;

} catch (PDOException $e) {

//show exception
echo $e->getMessage();
}
其它問題: 如有 SQLSTATE[01000] SQLDriverConnect: 0 [unixODBC][Driver Manager]Can't open cursor lib '/etc/libodbccr.so' : file not found
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libodbccr.so.2 libodbccr.so

2019-04-12

win10 的啟動資料夾 無法用 捷徑了,改用vbs 腳本 啟動要開啟的程式

把底下的腳本
Set WshShell = CreateObject("WScript.Shell" ) WshShell.Run chr(34) & "pathofprogramexefile" & Chr(34), 0 Set WshShell = Nothing
存成 startup.vbs 放到 開始資料夾
shell:startup

2017-12-19

防火牆 內網 連不上 虛擬ip 的問題要用 nat loopback 來解決

FortiGate 為例 先建立 ip rang 如 192.168.1.0/24 在政策 中加入 來源 wan1 192.168.1.0/24 目的 internal 虛擬ip

2017-12-06

php curl ssl https 錯誤的 排除

curl 抓 https 時會出現以下的錯誤
Failed: Error Number: 60. Reason: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
原因是 ssl 無法驗証成功
解決方法一:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
解決方法二:
先用火狐或ie開啟連結,下載其 crt 檔,放到自已站中
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/path/download.crt");
缺點要自行注意到期日,重下新的 crt檔


參考連結:http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

2017-11-03

php 自行編譯後,如何新增 extension,以sybase_ct 為例,並安裝freetds以連線mssql,系統為ubuntu

自行編譯時會下載 完整安裝包 , 裡面有 ext 的 資料夾,底下全是可以 新增的 Extension
安裝前要裝 freetds
sudo apt-get install freetds-dev tds-odbc libsybdb5 libct4libdbd-freetds freetds-common freetds-bin
再裝 freetds-dev (開發包)才不會出現 ctpublic.h 找不到的的錯誤
sudo apt-get install freetds-dev
完成後切換到 sybase_ct 資料夾中
cd sybase_ct
phpize
sudo ./configure --with-php-config=/www/server/php/56/bin/php-config --with-sybase-ct=shared,/usr
sudo make
sudo make install
指令說明
phpize :建立php extension 用的configure
--with-php-config= :之前編譯php時的php-config 位置,我的是在/www/server/php/56/bin/php-config
--with-sybase-ct=shared,/usr :官方bug有說明,因為 ctpublic.h 是在 /usr/include 底下,所以要這樣設才找得到 https://bugs.php.net/bug.php?id=13782

最後再到php.ini中,新增一行 
extension=完成路徑/sybase_ct.so
完整路徑會在 make install 列出

重開 apache 或重開 php-fpm

2017-06-30

apache 最大連接數

以 ubuntu 為例
sudo vim /etc/apache/apache.conf
<ifmodule mpm_prefork_module="">
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</ifmodule>

如 伺服器記憶體有16G,保守基本服務需要6g,還剩10G可用,假如每個進程用5m(很大用量) 那麼理論上可以支援10000/5 = 2000
更新為
<ifmodule mpm_prefork_module="">
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 2500
MaxClients 2000
MaxRequestsPerChild 0
</ifmodule>

查看當前的連接數可以用:
ps aux | grep apache2 | wc -l
或:
pgrep apache2|wc -l

即時檢測HTTPD連接數:
watch -n 1 -d "ps aux | grep apache2 | wc -l"
或:
watch -n 1 -d "pgrep apache2|wc -l"