Как я могу написать PHP opcode, сохранить его в файле и заставить Zend Engine выполнить его? Любой метод или взлом приветствуются, если он делает трюк.Написание PHP-кода и его выполнение. Как сделать?
ответ
Существует несколько методов пространства пользователя (из плагинов), которые могут иметь дело с Opcodes.
- http://uk.php.net/apc_bin_load (и http://uk.php.net/apc_bin_dump)
- http://uk.php.net/bcompiler_read/http://uk.php.net/bcompiler_write_file
Ни производит простой текст, однако, поскольку опкоды не предназначены быть пользователем перезаписываемого языка (в отличии от Parrot).
Это означает, что я могу перезаписать кешированный файл с apc_bin_load, я думаю ... поэтому следующий вопрос будет заключаться в том, как симпатичные операторы opcode относятся к фактически используемому двоичному представлению. Вы что-то знаете об этом? ссылки или так? – Raffael
http://stackoverflow.com/questions/1795425/how-to-get-opcodes-of-php имеет некоторую информацию, в основном ссылаясь на «Vulcan Logic Dumper» - http://pecl.php.net/package/vld –
Существует расширение, называемое ulopcodes, которое позволяет вам генерировать собственные коды операций с помощью функции, которую она предоставляет PHP-коду.
Например:
ulopcodes_emit(ZEND_ECHO, "Hello world!");
Создаст эту строку в текущем oparray, которая будет выполнена в VM.
Данное расширение является чисто образовательным и не предназначено для использования в производственном коде.
(Отказ от ответственности: Я создатель ulopcodes)
есть ли расширение для экспорта кодов операций? – kodmanyagha
Да, вы можете использовать [vld] (https://github.com/derickr/vld), например, для вывода сгенерированных кодов операций. – pmmaga
Что такое опкод? – abcde123483
попробуйте google it :) – Raffael