問題タブ [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.

0 投票する
1 に答える
2213 参照

php - 拡張機能から PHP ユーザー空間にオブジェクトを返すにはどうすればよいですか?

タイプGraphという名前のプロパティを含むC++ オブジェクト があります。C++ で作成している拡張機能でオブジェクトを PHP に公開しています。catCategoryGraph

Graphのメソッドが boolean や long などのプリミティブを返す限り、Zend マクロを使用できますRETURN_*()(たとえばRETURN_TRUE();、 またはRETURN_LONG(123);.しかし、どうすれば

Graph->getCategory();

CategoryPHP コードが操作するオブジェクトを返しますか?

http://devzone.zend.com/article/4486のチュートリアルに従っています。これまでに作成したグラフ コードは次のとおりです。

0 投票する
4 に答える
38749 参照

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サーバーはインターネットに接続されていません。他にインストールする方法はありますか?

0 投票する
3 に答える
768 参照

php - Valaプログラミング言語でPHPモジュールを作成するにはどうすればよいですか?

Valaと呼ばれるこの新しい言語は、C#に似ており、おそらくC ++やCよりも簡単であると言われており、GCCコンパイラを使用してLinux上でCにコンパイルされます。

いいね。これを使用してPHP拡張モジュールを作成し、遅いPHPコードをValaで作成して、関数としてPHPにインポートできるようにします。

Valaでこれを達成するにはどうすればよいですか?それも可能ですか?

0 投票する
3 に答える
3033 参照

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ではなく重要な機能なのですか!??!?! (パイソンが大好きです:)

0 投票する
1 に答える
1920 参照

php - PHP 拡張機能から C++ オブジェクトの配列を返す方法

PHP 拡張機能でオブジェクトの配列を返す必要がありますが、これを行う方法がわかりません。

GraphC++ で記述されたオブジェクトがあります。Graph.getNodes()を返しますstd::map<int, Node*>。これが私が現在持っているコードです:

それから

実行するphp -r '$g = new Graph(); $g->getNodes();'と、出力が得られます

XX]Segmentation fault

つまり、getNodes() 関数は 2 つのノード リストを正常にループし、リターンしてから segfaults を返します。私は何を間違っていますか?

0 投票する
1 に答える
1358 参照

php - SWIGを使用したPHPC/C++拡張モジュールの作成

私は、「昔ながらの方法」を使用して、つまり手動の方法を使用して、PHP用のC / C ++拡張モジュールをいくつか作成しました(Sarah Golemonが彼女の本で説明しているように)。

これは私には面倒で、私は怠惰なので、可能な限り自動化したいと思っています。また、私は今SWIGを使用してPythonの拡張機能を生成しており、それを非常に多く使用することが好きになっています。

SWIGを使用して将来のPHP拡張機能を生成することを考えています。実稼働サーバーでPHPv5.2(およびそれ以降)を使用しています。

私の質問は次のとおりです。

  1. SWIG PHPインターフェースはまだ安定していますか(つまり、本番環境の準備ができていますか)?
  2. 質問1に「はい」と答えた場合、本番サイトで使用していますか?
  3. SWIGを使用してPHP拡張モジュールを作成するときに注意する必要のある「落とし穴」はありますか?
0 投票する
1 に答える
302 参照

java - phpをjava/c ++で拡張しますか?

私はphpしか知らないので、必要に応じてphpWebアプリケーションをc++またはjavaで拡張できるかどうか疑問に思います。コードをquercusで変換したくないので、エラーが発生しやすくなります。それを拡張する別の方法はありますか?

私が読んだことから、PythonはPythonコードを変換せずにC ++で拡張でき、jythonでJavaを使用できますか?

0 投票する
3 に答える
324 参照

php - PHP アプリ用の C 拡張機能を開発するには?

私の PHP アプリには、PHP では遅すぎる数処理部分があるため、カスタム C 拡張機能を構築することを考えていましたが、最初から適切なリファレンスを見つけることは不可能です :(

このようなことを行う方法に関するガイドはありますか?

0 投票する
1 に答える
1181 参照

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 ファイル全体は次のとおりです。

0 投票する
1 に答える
5737 参照

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()を呼び出します。

利用した:

その後、すべてが機能します!