問題タブ [php-extension]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP拡張機能を作るためのSWIG、試してみましたか?
C (C++ ではない) で書かれたいくつかの小さなライブラリとラッパーがあり、拡張機能を介して PHP で利用できるようにしたいと考えています。適切な PHP 拡張機能の作成に関するいくつかのチュートリアルを読みましたが、難しくはないように思えますが、ライブラリに加えて拡張機能を維持するという面倒なことはしたくありません。
SWIGは Zend PHP 5 と互換性のある拡張機能の構築をサポートしていると読みましたが、これは私にとって完璧です。ただし、SWIG のドキュメントによると、サポートはベータ版のようです。
C での使用法のメタ例として、私のライブラリはかなり一般的です。
SWIG を使用してライブラリの拡張機能をこれほどシンプルにする経験を共有できる人はいますか? ビルドのオプション部分として PHP 拡張機能を作成するために SWIG を使用している、C で書かれたフリー/オープン ソース プロジェクトを知っている人はいますか?
フィードバックをお待ちしております。それが肯定的である場合、私は SWIG を実際に理解することに時間を割きます。
php - swig インターフェイスのコンパイル後にシンボルが見つからない
Linux共有オブジェクトのphpインターフェイスをコンパイルしようとしていますが、swigからの出力を使用して問題なくコンパイルできましたが、ロードしようとすると、シンボルが見つからないというエラーが表示されます。
今、私は zend を見てきましたが、それは php フレームワークのようです。リンクするライブラリが不足していると思いますが、どのライブラリかわかりません。
他の誰かが以前にこれを行い、それを機能させましたか?
編集:
php - PHP によってロードされた拡張機能を確認するにはどうすればよいですか?
phpinfo() ダンプのどこかにあるはずですが、どこにあるのかわかりません。「追加モジュール」セクションの下にあるはずですか?何処か別の場所?一部の拡張機能がロードされていないように見える理由を理解しようとしていますが、どこを見ればよいかさえわかりません。
php - C++ で PHP5 拡張機能の作成を開始する方法
私は PHP5 拡張機能を作成しています。C で作成することもできますが、C++ を使用して STL と Boost を利用する方が簡単です。
問題は、私が見たチュートリアルは C しか扱っていないことです。C++ を使用する基本的な例を探しています。
これが私がこれまでに試したことです:
config.m4
php_hello.h
PHP インターフェイスが extern "C" としてビットを宣言しようとしていることに注意してください。
こんにちは.cpp
....そしてここに私のビルドエラーがあります:
これをphpizeし、構成して作成すると、次のようになります(明確にするために再フォーマットされています)
機能する makefile を作成するには、config.m4 に対してさらに作業を行う必要があると思いますが、GCC ツールチェーンは初めてです。
それが役立つ場合、私はphp 5.2.6+のみを対象としており、Linux(具体的にはUbuntu 8.04)のみを対象としています。私のビルド環境は、gcc 4.3.2 を使用して Ubuntu 8.10 を使用しています。
ありがたいことにポインタを受け取りました!
php - PHP で拡張機能をロードする方法の違い
違いは何ですか?
php - Mac の PHP 拡張機能
PHP 拡張機能を作成し、Mac の Apache サーバーで実行しようとしています。
コマンドライン経由で正常に実行されます。次に例を示します。
また、ソースから Apache をビルドしようとしましたが、それを実行すると完全に動作します (Mac の組み込み Apache と同じ PHP を使用するようにセットアップしたので、違いはありません)。
ただし、拡張機能をデフォルトの Apache でロードすると、[システム設定] -> [Web 共有] を使用するか、sbin で同等の apachectl を使用すると、次のように表示されます。
Mac の Apache に何か奇妙な点がありますか、それとも私が設定しなければならないパーミッションがありますか?
php - アルゴリズムを非常に高速にプログラムする必要がある場合、php 拡張機能として実行する必要がありますか?
私のアプリケーションのほとんどは PHP ((フロント エンドとバック エンド) で書かれています。動作が遅すぎる部分があり、おそらく PHP ではなく、書き直す必要があり
ます
。最速の開発
3. 簡単に保守できます。
このコードを CPP で PHP 拡張機能として書き直すことを考えていますが、このソリューションに固執していて、よりシンプルで優れたソリューションを見逃しているのではないでしょうか?
アルゴリズムは、実行されるたびに数 MB のデータに対して PorterStemmerAlgorithm です。
c++ - PHP拡張機能を構築するときに、マングルされていないC ++シンボルを確認するにはどうすればよいですか?
インストールされているC++ライブラリ(Boost Date_Time)に依存するC++で記述されたPHPモジュールがあります。
現在、config.m4ファイルで、次のようにライブラリをチェックしています。
現在、これは現在の環境で機能しますが、ライブラリまたはコンパイラの別のバージョンでこれが機能しなくなる可能性があることを痛感しています。
マングルされていないC++シンボルをautomakeに理解させるにはどうすればよいですか?
編集:
マングルされた名前をチェックするのは恐ろしいことですが、「nm -C」によって返されるシンボル名をチェックする方法はありません(例:boost :: gregorian :: bad_monthなど)。
automakeコマンドAC_LANG_CPLUSPLUS()への参照を見つけましたが、それを使用する方法と、ここで適用できるかどうかはわかりません。