C++ で PHP 拡張機能を作成しました。コンパイルしてインストールすると、問題が発生します。ゆっくり聞いてください。
1. テストのために、テスト スクリプト ctp.php を書きました
<?phpecho "hello this is a test ctp extension!<br>";if(function_exists("helloWorld")){echo "exist\n";}else{echo "none exist\n";}echo helloWorld('baren')
cli モードで php を実行するために使用される構成ファイルは、Web を実行するために使用される構成ファイルとは異なることだけがわかります。Web を実行している構成ファイルにも拡張機能を追加する必要があります。設定ファイルでは、
Web は設定ファイル /usr/local/php/etc/php.ini を使用します
cli は、これ /etc/php.ini である必要があります
ご回答ありがとうございますが、あなたの答えは間違っています。
エラーは次のとおりです:
1. CLI と WEB 設定ファイルは同じです。そして、デプロイするときに、拡張機能設定ファイル ctpextension.ini を、「このディレクトリをスキャンして追加の .ini ファイルを探します: /usr/local/php/php.d」のデフォルト ディレクトリの下に配置しました。PHP が設定ファイルをロードすると、自動的にこのディレクトリを確認し、ctpextension.ini ファイルの内容を php,ini に追加します。
2. 「cli は /etc/php.ini であるべきです」と言われました。また、システムにこのファイル ディレクトリがあることもわかりました。そのため、このファイルを削除し、コマンド ラインでスクリプトを実行して同じファイルを取得しました。結果。あなたの発言が間違っていることを証明してください。
追加の .ini ファイルについては、ここで読むことができます: http://php.net/manual/zh/function.php-ini-scanned-files.php
コマンドラインは php をリアルタイムで読み込みますが、Web はリアルタイムで php を読み込みます。変更 PHP 構成に拡張機能を追加した後、有効にするためにサーバーを再起動する必要があります。
コマンドラインは php をリアルタイムで読み込みますが、Web は拡張機能の追加など、php 設定を変更した後、有効にするためにサーバーを再起動する必要があります。
推測はやめてください、私はこの問題を解決するために外国の開発者に依頼しました。
実際、この問題は設定とは何の関係もありません。設定が正しい場合、コマンドラインとブラウザの両方に関数がすでに存在していることが表示されません。
問題の理由は、私が作成した PHP 拡張ライブラリが依存するサードパーティ ライブラリが更新されたのに、それを知らないまま古いバージョンのドキュメントを読み続けているという問題があります。ブラウザは結果を出力しません。
C++ ファイルの std::cout を Php::out に変更するだけです
待っていた結果の画像をお見せしましょう