RC 很長一段時間以後, PHP 8.1 終於發布了!
功能上的異動可以參考:https://www.php.net/releases/8.1/en.php
軟體開發和生活瑣事
RC 很長一段時間以後, PHP 8.1 終於發布了!
功能上的異動可以參考:https://www.php.net/releases/8.1/en.php
不曉得 GCP Cloud Functions 到底對 PHP 支援多少東西,畢竟很多功能需要安裝 extensions,因此寫個 script 列出環境中可用的 extensions:
<?php var_dump(get_loaded_extensions());
不過很意外得發現幾乎所有 extensions 都可以用:
Array
(
[0] => Core
[1] => date
[2] => libxml
[3] => openssl
[4] => pcre
[5] => sqlite3
[6] => zlib
[7] => bcmath
[8] => bz2
[9] => calendar
[10] => ctype
[11] => curl
[12] => dba
[13] => dom
[14] => enchant
[15] => hash
[16] => fileinfo
[17] => filter
[18] => ftp
[19] => gd
[20] => gettext
[21] => gmp
[22] => SPL
[23] => iconv
[24] => intl
[25] => json
[26] => ldap
[27] => mbstring
[28] => session
[29] => pcntl
[30] => PDO
[31] => standard
[32] => pdo_pgsql
[33] => pdo_sqlite
[34] => pgsql
[35] => Phar
[36] => posix
[37] => Reflection
[38] => mysqlnd
[39] => shmop
[40] => SimpleXML
[41] => soap
[42] => sockets
[43] => pdo_mysql
[44] => exif
[45] => sysvshm
[46] => tidy
[47] => tokenizer
[48] => xml
[49] => xmlreader
[50] => xmlrpc
[51] => xmlwriter
[52] => xsl
[53] => zend-test
[54] => zip
[55] => mysqli
[56] => cgi-fcgi
[57] => Zend OPcache
)
看了 example code,也可以使用 composer,這樣彈性非常大。搞不好可以把一些服務直接搬過去了。
PHP Versions Status 2021 文章中看到,目前的 PHP 已經有過半都已經更新到 7.x,是個不錯的消息。

版本大至相同後,社群開發的共用函式庫、PHP 核心較能將花的時間收斂起來用在刀口上,遇到問題在網路上也比較容易找到解決方法。
接下來就看 8.x 的規範定下來後,大家慢慢把程式碼升上去了。
看到 Hacker News 的新聞「PHP Site’s User Database Was Hacked In Recent Source Code Backdoor Attack」:
While this was initially treated as a compromise of the git.php.net server, further investigation into the incident has revealed that the commits were a result of pushing them using HTTPS and password-based authentication, leading them to suspect a possible leak of the master.php.net user database.
從伺服器的記錄猜測,攻擊者是透過 HTTP authentication 的方式,在 git repository 偷偷藏入 backdoor。若猜測是正確的,表示攻擊者可能已經取得 master.php.net 的使用者資料庫。另外也提到網站運作的環境太老舊,攻擊者也可能已經找到軟體上的弱點並透過這些弱點來設計攻擊。
官方已將網站改用 TLS 1.2,並將密碼儲存方式從 MD5 更新為 bcrypt 雜湊。比較好奇如果沒有保留密碼,要怎麼從 MD5 更新為 bcrypt?Hash 二次嗎? XD
若需要偵測 WordPress 目前使用的佈景主題 (theme),可以使用 wp_get_theme() 這個函式:
<?php $theme = wp_get_theme();
回傳值是一個 WP_Theme 物件,可以參考 reference 來做進階判斷。
若要尋找目前以下載的佈景主題資訊,也可以使用 wp_get_theme():
<?php
wp_get_theme('twentytwenty');
if (!is_object($theme)) {
return 'error';
}
echo $theme->get('ThemeURI');