PHP CURL 遇到 tls12_check_peer_sigalg wrong signature type 解法

PHP 使用 CURL 要爬某個頁面,或者某個網站的 API,怎麼爬都是空白頁面,又沒有被擋,把 CURL 的 Error Info 印出來後,看到下述錯誤:

curl: (35) error:1414D172:SSL routines:tls12_check_peer_sigalg:wrong signature type

閱讀全文〈PHP CURL 遇到 tls12_check_peer_sigalg wrong signature type 解法〉

PHP 於 Header 送 noindex 給 Crawler bot

某些頁面不想要讓 Search engine (Google、Bing) 的 crawler bot 爬,有幾種方法可以使用:

  1. HTML Meta Tag
  2. 使用 robots.txt
  3. 於 HTTP Header 送 X-Robots-Tag

此篇主要紀錄 HTTP Header 的作法

閱讀全文〈PHP 於 Header 送 noindex 給 Crawler bot〉

PHP 強制使用「強型態」的模式

PHP 7 之後,function、Class 等等都可以指定型態、回傳的型態,但是雖然寫 int,傳進來還是可以傳 float,要怎麼強制型態不對就直接出錯誤呢?

function 指定型態完整寫法

<?php
function sum(int $a, int $b): int
{
    return $a + $b;
}

function avg(int $a, int $b): float
{
    return ($a + $b) / 2;
}

// Class
class C {}
class D extends C {}
function f(C $c)
{
    echo get_class($c)."\n";
}
f(new C); // C
f(new D); // D
?>

PHP 的型態:PHP: Type declarations

閱讀全文〈PHP 強制使用「強型態」的模式〉

PHP 於 CLI 吃 URL 參數 給 $_GET 使用

PHP 於 CLI 界面,想要將網址的參數丟進去,然後讓 $_GET 直接吃到,該怎麼做呢?

註:使用情境在於網頁程式寫好,但是想要測試的時候,於 CLI 想要使用同樣頁面來做測試,可以這樣子做。

閱讀全文〈PHP 於 CLI 吃 URL 參數 給 $_GET 使用〉

將 \x 開頭編碼的資料使用 HTTP POST 傳送與接收

\x 開頭編碼是 16進位的數字,可以直接轉成一般文字輸出,可詳見此篇:將 \x 開頭編碼的資料轉成中文輸出

但是想要將 \x 於 html input / textarea 傳送,再用 $_GET、$_POST 等接收 並且做轉換,要怎麼做呢?

閱讀全文〈將 \x 開頭編碼的資料使用 HTTP POST 傳送與接收〉

PHP 無法看到、寫入 /tmp 的解法

PHP 在寫入檔案的時候(Debain Linux),函式回傳值都是正確的,但是檔案就是沒有出現,到底發生什麼事情呢?

範例程式

<?php
var_dump(file_put_contents('/tmp/abc.txt', 'abc', FILE_APPEND | LOCK_EX)); // int(3)
?>

回傳 3 bytes 都是正確的,但是就是 /tmp/abc.txt 沒有產生

閱讀全文〈PHP 無法看到、寫入 /tmp 的解法〉

PHP 如何為 json_encode 移除 Array Index

PHP 與 JavaScript 串接經常回傳 JSON 格式,但是會遇到 PHP 的 Array 預設 Index (Assoc array key reference index) 都會有 1、2、3 ...,要怎麼移除這 Index 在傳給 JavaScript 呢?

閱讀全文〈PHP 如何為 json_encode 移除 Array Index〉