2020/10/24
[Composer] v2.0 已釋出! 來更新至最新的 Composer 2.0 版本吧!
markdown
2020-10-24 Composer 2.0 正式釋出!
### 關於 Composer 2.0 新功能
- 改善效能 50% 以上 (這個很需要啊)
- 架構變更及確定性:vendor 更新不受網路錯誤干擾
- Runtime 特徵 (可在 composer.json 設定 `"composer-runtime-api": "^2.0"`)
- 錯誤訊息改善
- 暫時限制部分更新 (`composer update vendor/package:1.0.*`)
### 如何更新至 Composer 2.0
Composer 2.0 基本上可以順利快速升級
- 2.0 版本仍支援 PHP 5.3 以上版本
- composer.lock 檔案可在版本間互相操作,可更新至 2.0 版本或是回復
- 大多數的命令在 2.0 保持一致
若原先使用 Composer 1.x 版本,執行 `composer self-update` 則會更新 1.x 的主要穩定版本
更新至 2.0 只要執行以下命令
```
composer self-update --2
```
若隨時要變更至 1.x 版本,則執行
```
composer self-update --1
```
### 向下相容問題
- plugings: 需要更新支援 Composer 2
- 避免相容性錯誤,可在部署至 production 時執行 `composer check-platform-reqs --no-dev`
- Repository 優先性:若套件存在於較高優先的儲存庫,即會完全忽略較低優先性的儲存庫
- 無效的 PSR-0 / PSR-4 設定將不自動載入 optimized-autoloader 模式
### 未來如何
根據發佈消息,Composer 2.1 應該還是會支援 PHP 5.3,但 Composer 2.2 就會要求要 PHP 7.1.3 以上版本。
### References
- [Composer 2.0 is now available!](https://blog.packagist.com/composer-2-0-is-now-available/)
- [Upgrade guides for Composer 1.x to 2.0](https://getcomposer.org/upgrade/UPGRADE-2.0.md)
2020/06/15
[PHP] 解決執行 Composer 出現 PHP Fatal error: Allowed memory size exhausted 的問題
markdown
### 問題
今天在執行 composer require 套件安裝時出現 PHP Fatal error: Allowed memory size of xxx bytes exhausted 的錯誤訊息
### 解決方法
1. 在 `php.ini` 加大 `memory_limit` 或是設 `memory_limit = -1` (不限制)
2. 使用命令 `php -d memory_limit=-1 composer.phar`
### 參考連結
- [Composer trouble shooting: memory-limit-errors](https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors)
2019/06/12
[PHP] 指定專案特定 PHP 版本以下載符合的 composer 套件
markdown
### 前言
一般來說,開發人員的機器總是會安裝最新版本的 PHP 來開發
但是總是會有久遠要維護的專案,而 PHP 版本可能也是久遠的舊版本
如果想透過 Composer 來管理套件,但又想要限制特定支援的安裝版本套件,那該怎麼辦呢?
### 問題
開發環境用 PHP 7.3,維護專案採用 PHP 5.6.1
在不變更開發環境的 PHP 版本之下,專案更新套件時會下載到最新的版本
### 解決方法
在 Composer 有個方便的設定
`composer.json`
只要在 config 加上 platform 的 php 版本即可
```json
...
"config": {
"platform": {
"php": "5.6.1"
}
},
...
```
也可用指令方式來下命令達到一樣的效果
```
composer config platform.php 5.6.1
```
### 更新 composer
修改 composer.json 後執行更新,即會做降版動作
```
$ composer update
```
### References
- [Enforcing a PHP Version for Installed Composer Packages](https://andy-carter.com/blog/composer-php-platform)

2016/01/17
[TDD] 基礎 PHPUnit 設定
設定 PHPUnit 專案環境
開始一個簡易的 PHPUnit 專案之前- PHP 5.5+ (5.4 不再更新了, 就升級吧!!)
- 先確認 Composer 已安裝
- 安裝全域用的 PHPUnit (
composer global require phpunit/phpunit
)
Project/
|-- tests/ (放測試的檔案)
|-- src/ (放置原始碼)
開啟 Terminal 或 Cmd 等指令輸入工具用 Composer 安裝 PHPUnit 套件於專案中使用
composer require phpunit/phpunit --dev
修改 composer.json
檔案, 將 src
對應至 autoload依需求變更 namespace
{
...
"autoload": {
"psr-4": {
"": "src/"
}
}
}
執行更新 autoload 的檔案composer dump-autoload
新增 PHPUnit 的設定檔 phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php">
</phpunit>
最基本的設定就完成囉!!2015/11/20
[Laravel] 整合工具系列: 輕量資料庫 Adminer
過去在無法直接管理遠端的 MySQL 資料庫時, 都要上傳一大包的 phpMyAdmin. 但是肥大的工具, 其實大多只用簡易的功能 -- SQL 語法來建置初始資料表.
殺雞哪需要出動牛刀?! 偶然之下接觸到 Adminer 這個超輕量的資料庫管理工具, 只要一支檔案, 即可立即操作.
不過有薦於安全性, 還是不想直接門戶大開. 總會用 .htaccess 來限制 IP. 安全性是顧到了, 但如果沒有固定 IP, 就常需要再更新 .htaccess 的檔案, 又顯得有點小麻煩.
最近用 Laravel 執行的專案較多, 原本找到一個 laravel adminer 的套件, 不過呢~它只有單純的英文版!!!
決定動手自己來打造一個具權限控制的 adminer 整合套件, 順便把繁體中文版本也加上去!!
套件名稱: onecentlin/laravel-adminer
Laravel Adminer Database Manager (Laravel 輕量資料庫管理工具)
初聲試啼~ 歡迎指教~ ^^
殺雞哪需要出動牛刀?! 偶然之下接觸到 Adminer 這個超輕量的資料庫管理工具, 只要一支檔案, 即可立即操作.
不過有薦於安全性, 還是不想直接門戶大開. 總會用 .htaccess 來限制 IP. 安全性是顧到了, 但如果沒有固定 IP, 就常需要再更新 .htaccess 的檔案, 又顯得有點小麻煩.
最近用 Laravel 執行的專案較多, 原本找到一個 laravel adminer 的套件, 不過呢~它只有單純的英文版!!!
決定動手自己來打造一個具權限控制的 adminer 整合套件, 順便把繁體中文版本也加上去!!
套件名稱: onecentlin/laravel-adminer
Laravel Adminer Database Manager (Laravel 輕量資料庫管理工具)
初聲試啼~ 歡迎指教~ ^^
2015/10/26
[Tracy] 善用工具 -- Tracy 讓 PHP Debug 變簡單了
過去在開發 PHP 專案, 在除蟲的過程當中, 只能利用有限的錯誤訊息, 加上過去的經驗, 才能一步一步解決 error!
今天有機會學到新工具 Tracy (https://github.com/nette/tracy), 真讓人覺得 Debug PHP 程式變簡單了~
1. Composer 安裝
這樣該有的基本 library 就具備了
2. 如何使用?
先將 vendor/autoload.php 這支檔案引用進來
加上
今天有機會學到新工具 Tracy (https://github.com/nette/tracy), 真讓人覺得 Debug PHP 程式變簡單了~
1. Composer 安裝
composer require tracy/tracy
這樣該有的基本 library 就具備了
2. 如何使用?
先將 vendor/autoload.php 這支檔案引用進來
require __DIR__.'/vendor/autoload.php';
加上
Tracy\Debugger::enable();
就可以馬上使用囉
訂閱:
文章 (Atom)