Bạn,
Tôi đã thiết lập chroot-jail với nginx và phpfpm 7.4 từ packages.sury.org/php như thường lệ (trên Debian 5.10.103-1 bullseye).
Imagemagick không thành công:
<?php $im=new Imagick(__DIR__ . '/image.png');
Uncaught ImagickException: NoDecodeDelegateForThisImageFormat `PNG' @
lỗi/cấu thành.c/ReadImage/575
<?php phpinfo()
"Số lượng định dạng được hỗ trợ của ImageMagick: 0"
Phiên bản đã cài đặt: php7.4-imagick 3.6.0-4+0~20220117.35+debian11~1.gbp149f82
Tôi nghi ngờ một số vấn đề về chroot, nhưng các mô-đun PHP được tải bởi quy trình tổng thể của PHP và không yêu cầu bất kỳ thư viện nào trong nhà tù chroot. gdlib hoạt động. Từ dòng lệnh, tưởng tượng hoạt động như mong đợi, vì vậy tôi cho rằng tất cả các lib cần thiết đã được cài đặt. Đã kiểm tra kỹ nhà tù với một nhà tù đang hoạt động bình thường trên Debian buster, không thể tìm thấy bất kỳ sự khác biệt lớn nào.
Chưa bao giờ trải nghiệm điều này trước đây. Bất kỳ gợi ý?
Cập nhật
Nhận thấy một vấn đề bổ sung có thể được kết nối:
<?php system("/usr/bin/id)";
Mã kết quả: -1 error_get_last() ->Array (
[loại] => 2
[tin nhắn] => system(): Không thể fork [/usr/bin/id]
[tệp] => /htdocs/test.php
[dòng] => 198 )
Khi tôi thay đổi từ dòng lệnh với chroot --userspec=myphpfpmuser ...
lệnh /usr/bin/id
trả về id người dùng chính xác. Quá trình fpm đang chạy với tư cách là người dùng này.
$ ulimit -a
thời gian không chặn thời gian thực (micro giây, -R) không giới hạn
kích thước tệp lõi (khối, -c) 0
kích thước phân đoạn dữ liệu (kbyte, -d) không giới hạn
ưu tiên lập lịch trình (-e) 0
kích thước tệp (khối, -f) không giới hạn
tín hiệu chờ xử lý (-i) 256246
bộ nhớ bị khóa tối đa (kbyte, -l) 8205255
kích thước bộ nhớ tối đa (kbyte, -m) không giới hạn
mở tệp (-n) 1024
kích thước đường ống (512 byte, -p) 8
Hàng đợi tin nhắn POSIX (byte, -q) 819200
ưu tiên thời gian thực (-r) 0
kích thước ngăn xếp (kbyte, -s) 8192
thời gian cpu (giây, -t) không giới hạn
quy trình người dùng tối đa (-u) 256246
bộ nhớ ảo (kbyte, -v) không giới hạn
khóa tệp (-x) không giới hạn
Bất cứ ai có bất kỳ ý tưởng?