Khi bạn chạy composer update
, hệ điều hành sẽ xem xét các đường dẫn đã định cấu hình và cố gắng tìm tệp thực thi có tên đó.
Khi đang chạy php composer update
, composer
chuỗi được coi như một tham số đối với PHP, không được tìm kiếm trong bất kỳ đường dẫn nào. Bạn phải cung cấp đường dẫn đầy đủ để chạy nó.
Việc chạy which composer
sẽ cho bạn biết nơi Hệ điều hành tìm thấy tệp thực thi của trình tổng hợp và sau đó bạn chỉ cần sử dụng đường dẫn đầy đủ trong lệnh PHP:
$>which composer
/usr/local/bin/composer
$>php -d memory_limit=512M /usr/local/bin/composer update
...
Lưu ý rằng 512MB có thể là quá ít. Nhận thức của tôi là nó sẽ vui vẻ mất 1GB hoặc hơn, tùy thuộc vào số lượng phụ thuộc bạn sử dụng và sự đa dạng của phiên bản mà bạn cho phép về mặt lý thuyết, tức là nếu bạn cho phép Symfony ~2.3
, thì bạn làm cho Nhà soạn nhạc đối phó với nhiều phiên bản khả thi hơn so với sử dụng ~2.7
.
Cũng lưu ý rằng chạy Composer trên máy sản xuất không phải là ý tưởng tốt nhất. Bạn sẽ phải có quyền truy cập vào Github, có thể cung cấp thông tin xác thực truy cập, cài đặt công cụ VCS và bạn sẽ dễ dàng phá vỡ trang web của mình nếu bất kỳ máy chủ lưu trữ từ xa nào ngoại tuyến trong khi cập nhật. Tốt hơn là sử dụng Composer trên một hệ thống triển khai thực hiện tất cả các bước chuẩn bị, sau đó chuyển tất cả các tệp lên máy chủ sản xuất.
Cập nhật
Bây giờ đã là năm 2020 và cách Composer quản lý bộ nhớ của nó đã thay đổi khá nhiều. Điều quan trọng nhất là Composer sẽ tự tăng giới hạn bộ nhớ nếu nó gặp phải giới hạn đặt quá thấp. Tuy nhiên, điều này ngay lập tức gây ra sự cố hết bộ nhớ trên các máy có quá ít bộ nhớ được cài đặt. Bạn có thể làm cho Composer sử dụng ít bộ nhớ hơn bằng cách đặt biến môi trường như thế nào COMPOSER_MEMORY_LIMIT=512M
, nhưng điều này sẽ tạo ra vấn đề nếu Composer cần nhiều bộ nhớ hơn để hoạt động chính xác.
Điểm chính của tôi vẫn đúng: Không chạy Composer trên các máy có quá ít bộ nhớ được cài đặt. Bạn có thể cần 1,5 GB bộ nhớ trống để có thể cập nhật mọi thứ.
composer install
là đủ. Trong trường hợp của bạn, trong khi sử dụng shared hosting, tôi nghĩ bạn sẽ không hoạt động đượccomposer update
, vì vậy cách duy nhất là mua một VPS hosting như Digital Ocean, Linode.