Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: PHP

網站跑 cron 要注意的事情

Posted on 2021 年 3 月 18 日2022 年 7 月 16 日 By 日落 在〈網站跑 cron 要注意的事情〉中尚無留言

協助建立網站平台,看到平台的 cron 是這樣跑的:

curl  https://my.site/cron/update_catch.php
curl  https://my.site/cron/delete_unpaied_user.php

這樣樣做會出現問題:任何網路上的使用者都可以觸發 cron job。
若遇到惡意使用者去戳 update_catch.php,應該就可以作到 DoS 的效果。

比較好的作法,還是將 cron job 放在 web 沒有辦法 access 的路徑,再使用主機的程式去執行。例如:

/usr/bin/php  /path/to/site/internal/cron/update_catch.php
Tags:Linux, PHP, Web

Nginx 上傳大檔案需要調整的參數

Posted on 2021 年 3 月 2 日2021 年 3 月 12 日 By 日落 在〈Nginx 上傳大檔案需要調整的參數〉中尚無留言

 Nginx 上傳大型檔案,在網路上查到的,基本上就是修改「client_max_body_size」:

client_max_body_size 100m; # 限制上傳大小為 100MB

也可以改成無限制:

client_max_body_size 0;

但要注意的是,若 Nginx 在主機上是當作 reverse proxy 使用時,Nginx 收到檔案預設是先暫存在自己的主機上面,等到資料接收完畢後再一起丟到 server。

當檔案丟到 server 時,超過預設的「client_body_timeout」的  60 秒,就會視為失敗。因此遇到抄道行檔案,使 Nginx 將資料傳至 server 時間比預期的還要長 (不是 local network 等) 時,記得要將「client_body_timeout」延長:

client_body_timeout 300s
Tags:Nginx, PHP

phpbrew 無法安裝 pdo_mysql extension

Posted on 2020 年 10 月 12 日2021 年 3 月 12 日 By 日落 在〈phpbrew 無法安裝 pdo_mysql extension〉中尚無留言

phpbrew 沒辦法透過 ext install 的方式安裝 pdo_mysql。

若要安裝則需要在編譯 PHP 時直接將 pdo 和 mysql 加入編譯清單:

phpbrew install 7.4.0 +default +pdo +mysql

Tags:PHP

Laravel v7.0 新功能

Posted on 2020 年 4 月 21 日2021 年 3 月 12 日 By 日落 在〈Laravel v7.0 新功能〉中尚無留言

從官方網站整理下來:

Airlock

使用 Airlock 可以更輕鬆的支援 single page application (SPA)、token-based API 等等,同時也可以針對 token 設定可存取犯元 (scope)。 (感覺上類似 OAuth)

Custom Eloquent Casts

以往使用者從 Eloquent ORM 拉出資料以後,使用者可以自訂 cast type,也就是說可用者可以自動 cast attribute 成特定格式。範例可以參考 Laravel 的 Pull Request。

Blade

新增不少功能來 render HTML。詳細說明請參考 Larvel Docs。

HTTP Client

為了史 API 更靈活,Laravel 使用 Guzzle HTTP client 來與其他 API 溝通。

Routing Cache

透過新的方式來做 route 的 cache,即使大型網站 (800 routes) ,route matching 的速度也可以比以往快上 20 倍。

Tags:Laravel, PHP

修改專案的 tag (version) 就可以毀掉其他專案

Posted on 2020 年 1 月 14 日2021 年 3 月 12 日 By 日落 在〈修改專案的 tag (version) 就可以毀掉其他專案〉中尚無留言

今天剛好要處理 Zip 檔,目前看到功能比較齊全的專案應該是 Ne-Lexa/php-zip,但是用 composer require 時卻發生 error message 大噴發:

仔細一看 …. 居然有「v9.99.99」的版號,該不會要世界末日了吧?

打開 comploser.lock 看一下是怎麼回事,追蹤後得知相依性如下:


laravel v6.10.1  <=  ramsey/uuid ^v3.7

ramsey/uuid  <=  paragonie/random_compat": "^1 | ^2 | 9.99.99"

兇手抓到了,看來在 paragonie/random_compat 有一個版本號是 v9.99.99,composer 會自動拉最新的版本號來使用,因此只要任何專案 require 時沒有指定版本編號,composer 就會自動把相依性對到 v9.99.99,如果其他 package 有關連到,就是直接 dependency conflict 了。

要處理掉這個問題,只要在 composer.json 也 require paragonie/random_compat,但是加上指定版本編號如 ^v2.0,這樣 composer 就只會拉到 v2.x.x 的版本,不會去用 v9.99.99 這個版本。

ref:

  • Versions and constraints – Composer
Tags:PHP, 程式設計

文章分頁

上一頁 1 ... 8 9 10 ... 26 下一頁

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.