Writing PHP opcode and have it executed. How to do?
-
26-10-2019 - |
Question
How can I write PHP opcode, save it in a file and make the Zend Engine execute it? Any method or hack is welcome, as long as it does the trick.
Solution
There's a couple of user-space methods (from plugins) that can deal with Opcodes.
- http://uk.php.net/apc_bin_load (and http://uk.php.net/apc_bin_dump)
- http://uk.php.net/bcompiler_read / http://uk.php.net/bcompiler_write_file
Neither produces plain text however because the opcodes are not designed to be a user-writable language (unlike Parrot).
OTHER TIPS
There is an extension called ulopcodes that allows you to emit your own opcodes via a function that it exposes to PHP code.
For example:
ulopcodes_emit(ZEND_ECHO, "Hello world!");
Will create that line in the current oparray which will be executed by the VM.
This extension is purely educational and not intended to be used in production code.
(Disclaimer: I am the creator of ulopcodes)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow