Composer là một công cụ mạnh mẽ dùng để quản lý các thư viện PHP sử dụng trong dự án. Trong bài viết này chúng ta sẽ tìm hiểu một số lỗi phổ biến khi sử dụng composer và cách khắc phục chúng.
PHP Version Không Đúng Hoặc Thiếu Extension
Khi gặp phải lỗi này composer sẽ hiển thị thông báo lỗi như sau:
1 2 3 4 5 6 7 |
Loading composer repositories with package information Installing dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 - This package requires php >=5.5.9 but your PHP version (5.4.28) does not satisfy that requirement. Problem 2 |
Có 2 cách khắc phục lỗi này đó là:
- Cài đặt tất cả các extension thiếu và/hoặc update phiên bản PHP đúng với phiên bản composer yêu cầu.
- Thêm option
ignore-platform-reqs
khi chạycomposer install
hoặccomposer update
(ví dụcomposer install --dev --ignore-platform-reqs
).
Nên dùng cách nào trong hai cách trên? Câu trả lời tuỳ thuộc vào việc bạn chạy ứng dụng như thế nào. Cụ thể nếu ứng dụng của bạn cũng chạy trên cùng một phiên bản PHP mà composer yêu cầu thì bạn nên dùng cách đầu tiên. Ngược lại ứng dụng của bạn chạy trên phiên bản PHP khác với phiên bản composer yêu cầu thì bạn nên dùng cách thứ 2 (ví dụ cho trường hợp này như khi bạn chạy ứng dụng trong một docker container nhưng lại muốn install composer package từ ngoài host thay vì phải chui vào bên trong container để làm việc này).
Bạn lưu ý rằng ứng dụng của bạn sẽ phụ thuộc vào các package (hay dependency) mà sẽ composer tải về chứ không nhất thiết phụ thuộc vào phiên bản PHP và extension mà composer yêu cầu khi cài đặt hoặc update package.
Chưa Cài mb_string
Extention
Trường hợp bạn bạn phải gặp lỗi như sau:
1 |
the requested PHP extension mbstring is missing from your system. |
và bạn không muốn sử dụng option ignore-platform-reqs
như đề cập ở trên thì bạn cần cài đặt extension này.
Nếu bạn sử dụng Ubuntu câu lệnh cài đặt extension này sẽ như sau:
1 2 |
$ sudo apt-cache search mbstring $ sudo apt-get install php-mbstring # thay bằng kết quả tìm được ở trên |
Nếu bạn sử dụng Redhat:
1 2 |
$ sudo yum search mbstring $ sudo yum install php55-mbstring # thay bằng kết quả tìm được ở trên |
Failed to decode response: zlib_decode()
: data error
Khi gặp phải lỗi này composer sẽ đưa ra thông báo lỗi giống như ở trên. Cách khắc phục đơn giản bằng cách chạy câu lệnh sau:
1 |
$ composer clear-cache |
Sau đó chạy composer để cài đặt (hoặc update) lại package. Nếu bạn vẫn gặp lỗi thì có thể thử cách khác đó là không sử dụng package trên packagist.org bằng cách thêm đoạn code sau vào composer.json
đặt trước ký tự cuối cùng (}
) trong file này:
1 2 3 4 5 6 7 8 9 10 |
, "repositories":[ { "type":"composer", "url":"https://packagist.org" }, { "packagist":false } ] |
Mạng Chậm Hoặc Chạy Dưới Proxy
Trường hợp này bạn nếu như do mạng chậm thì bạn nên xem xét nâng cấp gói dịch vụ internet đang sử dụng (khuyên làm vì nó không đáng bao nhiêu coi Facebook, Youtube giải trí cũng nhanh) hoặc sang nhà bạn, ra quán cafe ngồi chạy composer xong thì về code tiếp.
Trường hợp mạng bạn dùng đang chạy dưới proxy (nhất là ở các công ty Nhật) thì bạn nên liên hệ với bô phận IT thay vì cố gắng ngồi chạy đi chạy lại câu lệnh trên. IT nó mà chặn proxy thì chạy đằng giời cũng vẫn lỗi.
Trên đây là một số lỗi phổ biễn khi sử dụng composer do tác giả lượm nhặc được qua quá trình sử dụng công cụ này. Hy vọng sẽ giúp ích và giảm thời gian các bạn phải ngồi hàng giờ trước màn hình chỉ để fix nó.