問題タブ [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 ユーザー空間にオブジェクトを返すにはどうすればよいですか?
タイプGraph
という名前のプロパティを含むC++ オブジェクト があります。C++ で作成している拡張機能でオブジェクトを PHP に公開しています。cat
Category
Graph
Graph
のメソッドが boolean や long などのプリミティブを返す限り、Zend マクロを使用できますRETURN_*()
(たとえばRETURN_TRUE();
、 またはRETURN_LONG(123);
.しかし、どうすれば
Graph->getCategory();
Category
PHP コードが操作するオブジェクトを返しますか?
http://devzone.zend.com/article/4486のチュートリアルに従っています。これまでに作成したグラフ コードは次のとおりです。
php - pgsql.soはPHPにロードされません
私は、既存のPostgreSQLデータベースにアクセスするPHPアプリを作成するように依頼されました。言うまでもなく、アプリが実行される予定のLinuxボックスにPHPがすでにインストールされていることは言うまでもなく、Postgreを使用するのはこれが初めてです。私はこのようなものを設定した経験がなく、コーディングするだけです。
私の質問は、PHPでPostgre拡張機能を動作させることができないようだということです。php.iniファイルを確認しましたが、「extension=...」の行はありませんでした。そこで、「extension=pgsql.so」を追加しました。次に、「extension_dir」を確認したところ、そこには2つのファイル(ldap.so、phpcups.so)しかないことがわかり、別のLinuxボックスから取得したpgsql.soファイルを追加しました。httpdを再起動しました。そして、それは機能しません。phpinfo()で「pgsql」または「postgre」が見つかりませんでした。
私の許しを許してください。Linuxについてはほとんど知りません。私を正しい方向に向けていただければ幸いです。
私はnumber5によって与えられた提案を使用しました:
おい、私はRedHatにいます。私はあなたが与えたコマンドの「yum」バージョンを使用しました、そして私はこれを手に入れました:
[root @ perseus〜]#yuminstallphp-pgsql「installonlyn」プラグインの読み込みインストールプロセスの設定リポジトリの設定ミラーリストを取得できませんでしたhttp://mirrorlist.centos.org/?release=5&arch=x86_64&repo=extrasエラーは[Errno 4] IOError:エラー:リポジトリの有効なbaseurlが見つかりません:extras
残念ながら、私が使用しているLinuxサーバーはインターネットに接続されていません。他にインストールする方法はありますか?
php - Valaプログラミング言語でPHPモジュールを作成するにはどうすればよいですか?
Valaと呼ばれるこの新しい言語は、C#に似ており、おそらくC ++やCよりも簡単であると言われており、GCCコンパイラを使用してLinux上でCにコンパイルされます。
いいね。これを使用してPHP拡張モジュールを作成し、遅いPHPコードをValaで作成して、関数としてPHPにインポートできるようにします。
Valaでこれを達成するにはどうすればよいですか?それも可能ですか?
php - PHP で実行時に関数の名前を変更する
PHP 5.3 では、関数の名前を変更したり、関数を「フック」したりする方法があります。
rename_function()
〜2004年から壊れている「APD」内にあります。PHP 5.3 でビルドしようとすると、次のエラーが発生します。
'struct _zend_compiler_globals' has no member named 'extended_info'
これは非常に簡単に修正できるエラーです。次の行を変更するだけです。
GC(extended_info) = 1;
に
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
php.ini を変更すると、APD が phpinfo() に表示されます。rename_function()
ただし、PHPページを呼び出すとロードされず、 /var/log/apache2/error.log
.
最新バージョンの PHP で動作するように APD を修正する方法はありますか? または、関数の名前を変更する別の方法はありますか? なぜ一体なぜPHPではなく重要な機能なのですか!??!?! (パイソンが大好きです:)
php - PHP 拡張機能から C++ オブジェクトの配列を返す方法
PHP 拡張機能でオブジェクトの配列を返す必要がありますが、これを行う方法がわかりません。
Graph
C++ で記述されたオブジェクトがあります。Graph.getNodes()
を返しますstd::map<int, Node*>
。これが私が現在持っているコードです:
それから
実行するphp -r '$g = new Graph(); $g->getNodes();'
と、出力が得られます
XX]Segmentation fault
つまり、getNodes() 関数は 2 つのノード リストを正常にループし、リターンしてから segfaults を返します。私は何を間違っていますか?
php - SWIGを使用したPHPC/C++拡張モジュールの作成
私は、「昔ながらの方法」を使用して、つまり手動の方法を使用して、PHP用のC / C ++拡張モジュールをいくつか作成しました(Sarah Golemonが彼女の本で説明しているように)。
これは私には面倒で、私は怠惰なので、可能な限り自動化したいと思っています。また、私は今SWIGを使用してPythonの拡張機能を生成しており、それを非常に多く使用することが好きになっています。
SWIGを使用して将来のPHP拡張機能を生成することを考えています。実稼働サーバーでPHPv5.2(およびそれ以降)を使用しています。
私の質問は次のとおりです。
- SWIG PHPインターフェースはまだ安定していますか(つまり、本番環境の準備ができていますか)?
- 質問1に「はい」と答えた場合、本番サイトで使用していますか?
- SWIGを使用してPHP拡張モジュールを作成するときに注意する必要のある「落とし穴」はありますか?
java - phpをjava/c ++で拡張しますか?
私はphpしか知らないので、必要に応じてphpWebアプリケーションをc++またはjavaで拡張できるかどうか疑問に思います。コードをquercusで変換したくないので、エラーが発生しやすくなります。それを拡張する別の方法はありますか?
私が読んだことから、PythonはPythonコードを変換せずにC ++で拡張でき、jythonでJavaを使用できますか?
php - PHP アプリ用の C 拡張機能を開発するには?
私の PHP アプリには、PHP では遅すぎる数処理部分があるため、カスタム C 拡張機能を構築することを考えていましたが、最初から適切なリファレンスを見つけることは不可能です :(
このようなことを行う方法に関するガイドはありますか?
php - libtidy を使用した PHP 拡張機能はコンパイルされるがロードされない
libtidy を使用する拡張機能を C++ で作成しました。PHP をコンパイルすると、PHP の下で完全に実行されます--with-tidy
。
ただし、バニラ PHP で拡張機能を実行できると便利です。拡張機能を使用しようとすると、次のような結果が得られます。
拡張機能がロードされていません。
明らかに、公式の整頓された拡張機能は正常に機能します。関連する libtidy 開発パッケージがシステムにインストールされており、問題なくコンパイルとリンクが行われます。私はきちんとした拡張機能のコードを調べようとしましたが、マクロの巨大な塊です - 断片をランダムにコピーすることは貨物コードのように感じました.
でライブラリにリンクする以外に、PHP_ADD_LIBRARY_WITH_PATH(tidy, $TIDY_LIBDIR, TIDY_SHARED_LIBADD)
このエラーを修正する PHP 拡張機能または C ステートメントはありますか?
前もって感謝します!!
編集: config.m4 ファイル全体は次のとおりです。
sql-server - 未定義の関数mssql_connect()の呼び出し
私はいつもPHP5.2.3バージョンを使用していましたが、今ではPHPをバージョン5.3.2に更新しました。
MSSQLに問題があり、MSSQLサーバーに接続できません。
PHP1.1用のSQLサーバードライバーをダウンロードしました
たくさんのファイルがあります、私は使用しphp_sqlsrv_53_ts_vc9
ました。php /extディレクトリに配置しphp_sqlsrv_53_ts_vc9
ます。
(php.iniに)追加しましextension=php_sqlsrv_53_ts_vc9.dll
たが、エラーが発生します:
26行目のC:\ webserver \ www \ MSSQl \ db_mssql.class.phpにある未定義の関数mssql_connect()を呼び出します。
利用した:
その後、すべてが機能します!