Tôi muốn thực thi một tập lệnh php từ php sẽ sử dụng các hằng số khác nhau và các phiên bản khác nhau của các lớp đã được xác định.Có cách nào để thực thi mã php trong một hộp cát từ trong php
Có php_module sandbox nơi mà tôi có thể chỉ:
sandbox('script.php'); // run in a new php environment
thay vì
include('script.php'); // run in the same environment
Hoặc là proc_open() lựa chọn duy nhất?
PS: Tập lệnh không thể truy cập được qua web, vì vậy fopen ('http://host/script.php') không phải là một tùy chọn.
Giới thiệu về runkit; nó không có vẻ như sandbox tốt bằng cách mô tả, hoặc tôi có lẽ nên nói dễ dàng. Bạn có thể cấm các chức năng, nhưng tôi muốn cấm TẤT CẢ những người trong danh sách được cung cấp. Nếu người dùng cần một chức năng tôi có thể đánh giá sự an toàn của nó bằng tay theo yêu cầu. Dường như cách duy nhất là viết một thông dịch viên tùy chỉnh. Nếu tốc độ là một vấn đề bạn có thể làm cho nó chuyển đổi AST của nó thành PHP hoặc một ngôn ngữ khác, đây thực sự là những gì tôi sẽ làm bây giờ vì tôi không thể tìm thấy một giải pháp đã sẵn sàng. Chúc mừng! Ps. Có, tôi thấy rằng Q này là cũ. Ds. – Frank
Vâng .. Chúc may mắn tìm kiếm một cái gì đó có thể phân tích PHP thành một AST;) Tôi đồng ý với điểm của bạn mặc dù. – troelskn
FYI runkit dường như bị bỏ rơi và có thể bạn sẽ muốn biên dịch phiên bản CVS hoặc một trong các phiên bản được vá (http://github.com/tricky/runkit) nếu bạn muốn chạy nó trên phiên bản PHP hiện đại – Eli