PHP Embed SAPI を使用してオペコード ビューアを実装する方法、sapiopcodes_PHP チュートリアル
PHP Embed SAPI を使用して Opcode ビューア、sapiopcodes を実装する方法
PHP は Embed SAPI を提供します。つまり、PHP では、PHP/ZE が提供する関数を C/C++ 言語で呼び出すことができます。この記事では、Embed SAPI に基づいた PHP オペコード ビューアを実装します。
まず、コンパイル用のPHPソースコードをダウンロードします。私は現在PHP5.3 alpha2を使用しています
。
ソースコードディレクトリを入力してください:
./configure --enable-embed --with-config-file-scan-dir=/etc/php.d --with-mysql --with-config-file-path=/etc/
./作る
./make install
最後に、生成された libphp5.so をランタイム ライブラリのディレクトリに忘れずにコピーしてください。私はそれを /lib/ に直接コピーしました。そうしないと、独自の埋め込みプログラムを実行するときにエラーが報告されます。
./embed: 共有ライブラリのロード中にエラーが発生しました: libphp5.so: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありませんPHP の SAPI に詳しくない場合は、私の記事「Zend SAPI の詳細な理解 (Zend SAPI 内部)」を読むことをお勧めします
この時点で、C コードに PHP スクリプト パーサーを埋め込むことができます。私の例:
リーリー
次に、単純な Makefile であるインクルード パスを指定する必要があります
リーリー
コンパイルと実行が正常に完了すると、標準出力に Hello World! が出力されることがわかります。これに基づいて、vld に似たオペコード ダンパーを簡単に実装できます。
まず、オペコード変換関数を定義します (すべてのオペコードは Zend/zend_vm_opcodes.h で確認できます)。
リーリー
次に、zval と znode の出力関数を定義します。
次に、op_array の出力関数を定義します。
リーリー最後に、プログラムの主な関数があります:
リーリーテスト スクリプト (sample.php) をコンパイルして実行します:
コードをコピーします コードは次のとおりです:
サンプル.php:
エコー「ラルエンス」;
コマンド:
コードをコピーします コードは次のとおりです:
./opcodes_dumper サンプル.php
出力結果を取得します (次の結果に混乱している場合は、私の記事「PHP 原則の深い理解: オペコード」を読むことをお勧めします):
スクリプト:sample.php
最適な行 結果
1 4 1 1
ZEND_RETURN
ふふ、どうですか?
http://www.bkjia.com/PHPjc/1069344.html

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー
