Fix Curl Error: SSL certificate problem: unable to get local issuer certificate

最近正在安裝 WHMCS localhost 開發環境,程式安裝成功,但許可證一直無法通過,在原廠協助下,來來回回終於找到錯誤原因,就是 Curl 有錯誤,錯誤訊息:

Curl Error: SSL certificate problem: unable to get local issuer certificate

Fix Curl Error: SSL certificate problem: unable to get local issuer certificate

Curl在 WHMCS 中是很重要的,很多API的介接都需要靠它,我已經成功修復錯誤,以下分享修正方法。

修正 unable to get local issuer certificate 錯誤

Step 1. 下載CA憑證

到這個網址下載憑證: Download the certificate bundle.

Download the certificate bundle.

點紅框處下載,檔名為 cacert.pem

Step 2. 複製檔案到PHP安裝目錄中

雖然可以放在任意位置,單純是因為好找,所以我把它放在PHP安裝目錄中:

C:\php-7\extras\ssl\cacert.pem

Step 3. 確認PHP.ini啟用 mod_ssl 模組

找[……]

Read more

MIS WAMP手動安裝及設定教學 Apache2.4 + PHP7 for windows10

手動安裝 Apache2.4 + PHP7 for windows10

首先,我該選x64或x86安裝呢?

何謂 x64 和 x86,可閱讀下方網址文章,本篇不多做解釋
x86和x64到底有什麼差異?

注意 !!!

若安裝x64版本,PHP & Apache 都需要選擇x64版本,反之亦然

安裝 PHP7 for windows

PHP For Windows 官網

http://windows.php.net/

PHP For Windows 歷史版本 (官網)

本例下載 PHP 7.0 VC14 x64 Thread Safe

解壓縮至 PHP 的存放目錄
本例解壓縮至 C:php-7.0.10-Win32-VC14-x[……]

Read more

Javascript for each in 做到跟PHP foreach 一樣的使用方式

//先宣告物件
var myobj = new Object();

//給物件的屬性值
myobj.color = ‘red’;
myobj.name = ‘hsin’;
myobj.nation = ‘taiwan’;

//這邊展現如何用for – in 取出。
var content=”;
for(var key in myobj){
       content +=”屬性名稱:”+ key+” ; 值: “+myobj[key]+”n”;
}

alert(content);

出處:四處流浪的阿基[……]

Read more

PHP 判斷是否為行動裝置

因為目前裝置已經不只有電腦,可能有電腦、平板及手機,如何去判別user的瀏覽器然後給予不同內容,這樣的功能變得非常重要,今天發現了一個很簡單的方法~用網友寫好的Mobile Detect  class來做判斷,官網在下方,
http://mobiledetect.net/;
那斷的方式也很簡單~
範例如下~

  1. require_once(“Mobile_Detect.php”);   
  2. $detect = new Mobile_Detect;   
  3. $deviceType = ($detect->isMobile() ? ($detect->isTablet() ? ‘tablet’ : ‘phone’) : ‘computer’);  

PHP Deprecated: Function set_magic_quotes_runtime() is deprecated 解決方法

set_magic_quotes_runtime()於 PHP5.3後棄用

在 PHP.net 官方文件中有提到,set_magic_quotes_runtime()於PHP5.3已經棄用,雖然不會造成Fatal error而中斷程式,但會發送E_DEPRECATED的過時警告

Deprecated: Function set_magic_quotes_runtime() is deprecated

替代方案:

set_magic_quotes_runtime(0);

意思同上,以下列方法替代棄用的set_magic_quotes_runtime()

ini_set("magic_quotes_runtime", 0);
這一段主要是修改 php.ini 中 magic_quotes_runtime 參數
用以將SQL語句自動加上跳脫字元反斜線,以防止SQL注入隱碼攻擊(SQL injection)

PHP 5.4起,使用此函數會拋出Fatal error,終止程式運行

Fatal error: Uncaught Er[......]

Read more

PHP.INI的安全性設定參考

php.ini的安全性設定參考
safe_mode = on
限制system, exec等系統執行的能力,限制某些function只能處理與自己同一個UID的檔案。
safe_mode受限制的功能請參考http://tw2.php.net/manual/en/features.safe-mode.functions.php
因為mail()的第五個參數有漏洞,可突破safe_mode的限制,執行系統命令,最好disable,以SMTP的方式替代寄信。
register_globals = off
allow_url_fopen = Off (很重要的設定)
allow_url_fopen 打開的時候, 如果有人傳入一個參數為 xxx=http://xxx/xxx 之類的東西,
如果這個 php 的程式, 沒有檢查這個變數, 或是 register_globals 是開啟的情形下, 也許會造成這個 p[……]

Read more

PHP 以 Curl 傳遞 POST 資料,並取得回傳值

Curl 傳遞 POST 資料,並取得回傳值

/**
* VECTOR COOL
* https://vector.cool
*/
//用curl傳post並取回傳值
//一定要傳絕對路徑
function curl_post($url,$post)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close ($ch);
return $result;
}

使用範例:

/**
* VECTOR COOL
* https://vector.cool
*/
$url='h[......]

Read more