8

Hello WorldMicrosoft Visual C ++ 2008を使用してPHP拡張DLLを作成しました。権利はありますphp.iniが(gd2拡張を有効または無効にすると効果あります)、拡張をロードしても追加モジュールの下にポップアップ表示されません。でphpinfo()

関数(単純な関数)をテストしようとすると、double()明らかに機能しません。このチュートリアルを使用しました)。

誰かがこれを行うときに作成されたdllを提供できる場合(私のサーバーが台無しになっているかどうか、またはそれが私のサーバーであるかどうかを確認するため)、喜んでテストします。

システム仕様

OS:Windows(Vista)
サーバー:
WAMP PHP:5.3.5(XamppとIISもインストールされています)

コマンドを実行すると、次のphp --iniエラーが発生します。

PHP Startup: TalkPHP Extension: Unable to initalize module
Module compiled with build ID=API20090626, TS, VC9.
PHP   compiled with build IF=API20090626, TS, VC6.
These options need to match

これは、PHPをコンパイルするためにバージョン9を使用する必要があることを意味しますか?

4

3 に答える 3

2

VC9とVC6のビルドには互換性がありません。DLLをVC6でコンパイルするか、ダウンロードページからPHPバイナリをVC9でコンパイルする必要があります。

Apacheとmod_phpを使用している場合は、VC9 PHPをロードするためにApacheのVC9ビルドも必要になります。これらは、 apachehaus.comから入手できます。

于 2011-02-07T15:39:16.237 に答える
1

コメントからの解決策...

-ソリューションforums.zend.com/viewtopic.php?f=55&t=2045を見つけました

-重複の可能性:質問:stackoverflow.com/questions/3641751/

これらの警告が表示されます

c:\wamp\bin\php\php-5.3.5src\zend\zend_build.h(19) : warning C4005: 'PHP_COMPILER_ID': macro redefinition c:\wamp\bin\php\php-5.3.5src\main\config.w32.h(189) : see previous definition of 'PHP_COMPILER_ID' 1>
c:\wamp\bin\php\php-5.3.5src\main\config.w32.h(189) : warning C4005: 'PHP_COMPILER_ID' : macro redefinition 1> 
c:\wamp\bin\php\php-5.3.5src\zend\zend_build.h(19) : see previous definition of'PHP_COMPILER_ID'

私が実際にVC9でコンパイルしたと言っているという事実と関係があると思いますが、他の人には何もありません。(警告ですが、それが機能しない理由だと思います)

OK、それ以上何もしませんでしたが、試してみましたが、拡張機能を実行すると機能しました。php --iniからまだエラーが発生しましたが、実行されて機能しました。

于 2011-02-08T00:05:02.673 に答える
0

カスタムphp拡張機能をコンパイルして正常に実行しました。

次のことを試してみてください。

  • php-5.3.5からvc9ビルドを取得します
  • zend_build.hヘッダーファイルでPHP_COMPILER_IDを#defineしないでください(とにかく悪い考えです)
  • おそらくconfig.w32.hでもPHP_COMPILER_IDを定義しました。それを除く
  • プロジェクト設定(C / C ++-プリプロセッサ)で次を定義します:PHP_COMPILER_ID = \ "VC9 \"(phpのvc6ビルドが必要な場合は、PHP_COMPILER_ID = \"VC6\"を定義しようとします;これかどうかはわかりません問題なく動作しますが、コンステレーション[php-5.2.x vc6、vc9でコンパイルされたカスタムphp拡張機能]を問題なく使用しました)
于 2011-02-15T22:43:42.780 に答える