あなたが作成した PHP 拡張機能は、コマンドラインで実行した場合とブラウザで実行した場合で異なる結果になりますか?

WBOY
リリース: 2016-06-23 13:29:55
オリジナル
1289 人が閲覧しました

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')
ログイン後にコピー


2. ブラウザーとコマンド ラインで実行した結果は次のとおりです:


3. 私の質問:
1) なぜブラウザーで実行するのかhellWorld() 関数の値を出力できませんか?
2) このエラーを修正するには、設定ファイルを変更する必要がありますか?
3) アクセス許可の変更や環境変数の変更など、オンラインであまりにも多くの解決策を検索しましたが、どれも解決できません。最後の質問は、開発環境に関係するものですか?

4. 私の開発環境:
OS バージョン: centos 7 x86_64
PHP バージョン: 5.4.43
Web サーバー: Apache/2.4.16 (Unix)

拡張機能の作成と展開の経験がある方、助けていただけますか?

ありがとう!


ディスカッションへの返信 (解決策)

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 に変更するだけです

待っていた結果の画像をお見せしましょう


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート