Triển khai PHP với Composer: khác nhau giữa composer.json và composer.lock?

Đang tìm đáp án

27 lượt xem · 3 trả lời

Cộng đồng đang cùng tìm lời giải

Người đặt câu hỏi có thể chọn câu trả lời hữu ích nhất làm đáp án.

1. 12:26 06/08/2026
Chào admin, Nhóm mình đang chuẩn bị deploy dự án PHP. Có người muốn chạy composer update trực tiếp trên máy chủ, có người nói chỉ nên dùng composer install dựa trên composer.lock. Xin giải thích cách làm an toàn cho môi trường production và những tệp nào nên đưa vào Git?
0 Facebook
2. 12:26 06/08/2026
Chào bạn Phương, composer.json mô tả các ràng buộc phiên bản có thể chấp nhận, còn composer.lock khóa chính xác phiên bản đã được kiểm thử. Với ứng dụng, thường nên commit cả hai tệp để môi trường production cài đúng bộ dependency mà nhóm đã xác nhận. Quy trình tốt là chạy composer update có chủ đích ở môi trường phát triển hoặc CI, chạy test, review thay đổi trong lock file rồi commit. Khi triển khai, dùng composer install với các cờ phù hợp production như không cài dev dependency và tối ưu autoloader; không chạy composer update ngẫu hứng trên máy chủ. Hãy giữ secrets ngoài Git, dùng CI để kiểm tra dependency audit khi phù hợp và có cách quay lại phiên bản deploy trước nếu có sự cố.
0
3. 20:48 06/10/2026
Trả lời Phương Đỗ Chào admin, Nhóm mình đang chuẩn bị deploy dự án PHP. Có người muốn chạy composer update trực tiếp trên máy chủ, có ngườ…
Trong một dự án PHP, **composer.json** chỉ chứa danh sách các gói bạn cần và các giới hạn phiên bản mà bạn chấp nhận (ví dụ: “^1.2”). **composer.lock** ghi lại các phiên bản chính xác, các cam kết git, các đường dẫn và tất cả các phụ thuộc của chúng, tạo ra một cây phụ thuộc được xác định rõ ràng. Để triển khai an toàn trong môi trường production, bạn nên: 1. **Đưa cả hai tệp vào Git** – điều này cho phép bất kỳ máy chủ nào cài đặt chính xác cùng một bộ thư viện. 2. Trên máy chủ, thực hiện: ```bash composer install --no-dev --prefer-dist ``` (không sử dụng `composer update`, vì điều này sẽ ghi đè lên các phiên bản được ghi trong khóa). Chỉ cần bỏ qua thư mục `vendor/` vì nó sẽ được tạo ra trong quá trình cài đặt. Khi bạn cần một gói mới hoặc muốn nới lỏng một phiên bản, hãy chỉnh sửa `composer.json` cục bộ, chạy `composer update` để tạo lại `composer.lock` mới và đẩy cả hai lên. Bạn có đang sử dụng bất kỳ kho lưu trữ tùy chỉnh hoặc các phụ thuộc `dev` đặc biệt nào cần được xử lý khác không?
0
4. 21:56 10/10/2026
Trả lời Phương Đỗ Chào admin, Nhóm mình đang chuẩn bị deploy dự án PHP. Có người muốn chạy composer update trực tiếp trên máy chủ, có ngườ…
Khi triển khai PHP, bạn nên commit cả hai tệp composer.json và composer.lock vào Git. composer.json ghi lại các ràng buộc phiên bản bạn mong muốn, trong khi composer.lock ghi lại cây phụ thuộc chính xác cùng với checksum SHA của từng gói. Trên máy chủ production, hãy chạy composer install (mà không phải update) để cài đặt các gói dựa trên khóa đã commit
0
Vui lòng đăng nhập để tham gia trả lời chủ đề này.
Điều hướng nhanh

Bạn muốn khám phá điều gì?

Tìm chủ đề, bài viết hoặc đi thẳng đến một khu vực của cộng đồng.

Esc để đóng Ctrl K để mở lại