Nếu bạn có một máy chủ với tài nguyên bộ nhớ thấp, có lẽ bạn đã quen thuộc với lỗi “Fatal error. Kích thước bộ nhớ cho phép là XXX byte đã hết…” khi bạn cố gắng chạy lệnh php cli hoặc trình soạn thảo
Chạy lệnh php
Tất nhiên, bạn có thể tránh điều này bằng cách thay đổi các tệp cấu hình php của mình [hoặc chính hoặc cục bộ
$ php -d memory_limit=-1 setup:upgrade
2]. Tuy nhiên, điều này không phải lúc nào cũng thực tế vì bạn sẽ cần khởi động lại máy chủ webVì vậy, giải pháp thay thế là sử dụng trực tiếp tùy chọn
$ php -d memory_limit=-1 setup:upgrade
3 trên dòng lệnh nơi bạn có thể đặt tùy chọn php một cách nhanh chóng 🙂Đối với giới hạn bộ nhớ, bạn có thể chạy
$ php -d memory_limit=
Trong đó
$ php -d memory_limit=-1 setup:upgrade
4 là giới hạn bộ nhớ thực mà bạn muốn sử dụng cho lệnh bạn sắp chạy và $ php -d memory_limit=-1 setup:upgrade
5 là lệnh đó. Giới hạn bộ nhớ có thể giống như $ php -d memory_limit=-1 setup:upgrade
0 hoặc $ php -d memory_limit=-1 setup:upgrade
1 hoặc thậm chí bạn có thể loại bỏ giới hạn bằng cách sử dụng $ php -d memory_limit=-1 setup:upgrade
2Đây là mã cho thiết lập. lệnh nâng cấp không giới hạn bộ nhớ
$ php -d memory_limit=-1 setup:upgrade
Các tùy chọn dòng lệnh PHP hữu ích
Một tùy chọn php hữu ích khác là
$ php -d memory_limit=-1 setup:upgrade
3 hiển thị cho bạn phiên bản php mà bạn đang chạy trên dòng lệnh theo mặc định$ php -v
PHP 7.3.20-1+0~20200710.65+debian9~1.gbpc9cbeb [cli] [built: Jul 10 2020 07:22:47] [ NTS ]
Copyright [c] 1997-2018 The PHP Group
Zend Engine v3.3.20, Copyright [c] 1998-2018 Zend Technologies
with the ionCube PHP Loader [enabled] + Intrusion Protection from ioncube24.com [unconfigured] v10.3.2, Copyright [c] 2002-2018, by ionCube Ltd.
with Zend OPcache v7.3.20-1+0~20200710.65+debian9~1.gbpc9cbeb, Copyright [c] 1999-2018, by Zend Technologies
Và -i nơi bạn liệt kê tương đương với hàm phpinfo[] ngay trên dòng lệnh
$ php -i
phpinfo[]
PHP Version => 7.3.20-1+0~20200710.65+debian9~1.gbpc9cbeb
System => Linux 471732.cloudwaysapps.com 4.9.0-13-amd64 #1 SMP Debian 4.9.228-1 [2020-07-05] x86_64
Build Date => Jul 10 2020 07:22:47
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File [php.ini] Path => /etc/php/7.3/cli
Loaded Configuration File => /etc/php/7.3/cli/php.ini
Scan this dir for additional .ini files => /etc/php/7.3/cli/conf.d
Additional .ini files parsed => /etc/php/7.3/cli/conf.d/05-ioncube.ini,
/etc/php/7.3/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.3/cli/conf.d/10-opcache.ini,
/etc/php/7.3/cli/conf.d/10-pdo.ini,
/etc/php/7.3/cli/conf.d/15-xml.ini,
/etc/php/7.3/cli/conf.d/20-apcu.ini,
/etc/php/7.3/cli/conf.d/20-bcmath.ini,
/etc/php/7.3/cli/conf.d/20-bz2.ini,
/etc/php/7.3/cli/conf.d/20-calendar.ini,
/etc/php/7.3/cli/conf.d/20-ctype.ini,
/etc/php/7.3/cli/conf.d/20-curl.ini,
/etc/php/7.3/cli/conf.d/20-dba.ini,
/etc/php/7.3/cli/conf.d/20-dom.ini,
/etc/php/7.3/cli/conf.d/20-enchant.ini,
/etc/php/7.3/cli/conf.d/20-exif.ini,
...
Đang chạy nhà soạn nhạc
Nếu bạn đã cài đặt trình soạn thảo trên máy chủ của mình và bạn đang trực tiếp chạy lệnh trình soạn thảo, bạn sẽ không thể sử dụng chiến lược trên
Cách để tránh điều này là tải xuống trình soạn thảo và chạy nó bằng lệnh php. Làm sao?
Cài đặt trình soạn thảo trong thư mục hiện tại của bạn bằng cách chạy các lệnh sau [lấy từ getcomposer. tổ chức]
________số 8Việc sử dụng php
$ php -d memory_limit=-1 setup:upgrade
4 thay vì nhà soạn nhạc. Vì bạn thực sự đang chạy trình soạn thảo qua php nên bạn có thể sử dụng tùy chọn -d để thay đổi giới hạn bộ nhớ 🙂 Ghi chú. Việc tăng 'Giới hạn bộ nhớ Php' khác với việc tăng giới hạn kích thước 'PHP-upload'. Bạn có thể học cách tăng kích thước tải lên tại đây
Yêu cầu bộ nhớ PHP tiêu chuẩn cho lõi Drupal là tối thiểu. Các trang web chạy nhiều mô-đun đóng góp, hoặc đặc biệt là những mô-đun sử dụng nhiều bộ nhớ, sẽ cần nhiều hơn. Có một số kỹ thuật để tăng giới hạn bộ nhớ PHP và bạn chỉ cần sử dụng một trong số chúng. Cái phù hợp với bạn tùy thuộc vào cấu hình hệ thống của bạn
Giới hạn bộ nhớ phù hợp điển hình cho PHP chạy Drupal là 128 MB cho mỗi quy trình;
Thường xảy ra trường hợp phần quản trị của một trang web hoặc một trang cụ thể sử dụng nhiều bộ nhớ hơn các trang khác. Nếu đúng như vậy, bạn có thể tăng giới hạn bộ nhớ một cách có điều kiện dựa trên URL của trang
Mối quan hệ giữa giới hạn bộ nhớ và khả năng mở rộng
Điều quan trọng là phải hiểu rằng việc tăng dung lượng bộ nhớ mà mỗi quy trình PHP có thể sử dụng sẽ làm giảm số lượng quy trình đồng thời có thể chạy. Các quy trình đồng thời là chìa khóa cho số lượng yêu cầu trang tối đa mà bạn có thể phân phối tại bất kỳ thời điểm nào
Ví dụ: giả sử một máy chủ có 2 GB bộ nhớ trống cho PHP sau khi tính đến các quy trình khác đang chạy trên đó [HĐH, Apache, v.v.]
Giới hạn bộ nhớ/mối quan hệ đồng thời với RAM 2GB
Cách thay đổi giới hạn bộ nhớ
php. ban đầu
Đây là phương pháp được đề xuất nếu bạn có quyền truy cập vào tệp php của máy chủ. ban đầu. Điều này sẽ không thực hiện được trong một số môi trường lưu trữ được chia sẻ, mặc dù máy chủ của bạn có thể điều chỉnh nó cho bạn. Lưu ý rằng thay đổi này sẽ ảnh hưởng đến tất cả các trang web và tập lệnh PHP trên máy chủ
- Xác định vị trí php. ini được sử dụng bởi máy chủ web của bạn. Bạn có thể nhấp vào liên kết "thông tin thêm" trên phần PHP của trang trạng thái Drupal. hiển thị trang phpinfo[]. Định vị tệp cấu hình [php. ini] Hàng đường dẫn trên trang đó. Trong quá trình cài đặt, Drupal kiểm tra Giới hạn bộ nhớ PHP và nếu nó nhỏ hơn 64M, một thông báo lỗi cũng cung cấp đường dẫn đến tệp php. tập tin ini
- Chỉnh sửa tham số memory_limit trong php. ini [thường nằm trong phần có tên là Giới hạn tài nguyên]. Đảm bảo bạn sử dụng M để chỉ định số megabyte [không phải
6]$ php -d memory_limit=-1 setup:upgrade
7$ php -d memory_limit=-1 setup:upgrade
Nếu chưa có phần này, hãy đặt dòng trên vào cuối tệp. - Khởi động lại Apache
php. ini trong thư mục gốc của Drupal
Thêm dòng sau vào php. ini trong thư mục gốc Drupal của bạn.
______18
Điều này sẽ chỉ hoạt động nếu PHP đang chạy dưới dạng CGI/FastCGI.
người sử dụng. ini trong thư mục public_html [đối với PHP 5. 3 trở lên]
PHP 5. 3+ cho phép bạn thay đổi giới hạn bộ nhớ bằng cách đặt một. người sử dụng. ini trong thư mục public_html.
Chỉ cần tạo tệp trên và nhập dòng sau vào đó.
______18
Một số máy chủ cPanel chỉ chấp nhận phương pháp này.
Hai giải pháp tiếp theo bị hạn chế hơn về phạm vi và trong một số trường hợp, có thể là những lựa chọn phù hợp hơn là ảnh hưởng đến tất cả các trang web
htaccess
chỉnh sửa. htaccess trong thư mục gốc của Drupal. Hãy tìm phần
$ php -d memory_limit=-1 setup:upgrade
0và ngay sau đó thêm dòng sau.
______20
Phương pháp này sẽ chỉ hoạt động nếu PHP đang chạy dưới dạng mô-đun Apache
cài đặt. php
Nếu Drupal đã được cài đặt, bạn có thể chỉnh sửa trang web/mặc định/cài đặt. php. Phương pháp này sẽ chỉ ảnh hưởng đến trang web sử dụng tệp này.
Tìm phần cài đặt PHP và thêm dòng sau vào cuối phần đó.
______21
Trong một số môi trường lưu trữ được chia sẻ, quyền truy cập vào cài đặt giới hạn bộ nhớ PHP bị hạn chế. Nếu bạn không thể tự mình thực hiện thay đổi, vui lòng yêu cầu nhà cung cấp dịch vụ lưu trữ điều chỉnh nó cho bạn hoặc tìm một máy chủ mới cho phép linh hoạt hơn
Đối với một số máy chủ đổi tên php. ini sang php5. ini có thể cần thiết
Một số dịch vụ lưu trữ yêu cầu dòng sau trong. htaccess để bật php. tập tin ini.
______22
Đối với một số máy chủ [CrazyDomains], bạn có thể cần thêm các dòng sau vào tệp php. ini [nếu chúng chưa có]
$ php -d memory_limit=-1 setup:upgrade
1sửa đổi php. ini trong môi trường máy chủ cục bộ
Đối với MAMP, xem http. // drupal. org/node/66187 đặc biệt là "Tùy chọn. Điều chỉnh giới hạn bộ nhớ của PHP cho tập lệnh" [lưu ý sự khác biệt đối với MAMP Pro]
Nếu bạn đang sử dụng XAMPP/WAMP, có thể có hai PHP. ini [một trong thư mục PHP và một trong Apache/bin]. Để thay đổi giới hạn bộ nhớ của bạn, hãy chỉnh sửa tệp trong thư mục XAMPP/Apache/bin
Kiểm tra thay đổi của bạn đã có hiệu lực
Trong mọi trường hợp, bạn phải trả tiền để đảm bảo rằng thay đổi của bạn đang thực sự hoạt động. Kiểm tra báo cáo trạng thái của Drupal để xác minh rằng bộ nhớ của bạn thực sự là thứ bạn muốn. Nếu thay đổi của bạn dường như không hoạt động, hãy kiểm tra kỹ vị trí của php. ban đầu. Một số hệ thống có nhiều bản sao của tệp đó ở những nơi khác nhau. Chỉ một cái được sử dụng và những cái còn lại là cá trích đỏ
XHprof là một giải pháp tốt để tìm mức tiêu thụ bộ nhớ cao. Xem trang này để biết thêm hướng dẫn về cách cài đặt và sử dụng nó. http. //các nhóm. drupal. tổ chức/nút/82889