3

PHP プロジェクトを引き継いで、開発ボックスで実行しようとしています。私はシステム管理者ではなく開発者なので、うまく動作しません。

以前の開発者は、PHP を組み込むために .h ファイルを使用していました。私の現在の構成は、その .h ファイルを取得し、実行せずに含めています。私のApache設定で何を探す必要がありますか(またはそれは私のphp.iniですか)?

編集:

以下のコメントの1つを読んだときに、何かがクリックされました。コードは ASP スタイル タグ " <?" を使用しています。php.ini でオプションをオンにしました。phpinfo() によると、有効になっていますが、Apache はまだコードをテキストとして含んでいます。

私はちょうどそれをチェックし、完全な開始 PHP タグ " <?php" でコードを実行すると、問題が修正されました。そうは言っても、私はそれが他の方法で機能することを望んでいます。

最新バージョンが利用可能な Macbook でコードを実行しています。PHP 5.2.6、postgresql 8.3、および apache 2。

コードはステージング サーバーで動作しますが、違いがわかりません。

編集

Durrr...php.ini で short_open_tags を有効にしていませんでした。

4

6 に答える 6

6

問題は、含めている .h ファイルが、開始<?phpタグ " " なしで php コードで始まっていることでしょうか?

インクルードドキュメントから:

ファイルが含まれている場合、解析はターゲット ファイルの先頭で PHP モードから HTML モードに移行し、最後に再び再開されます。このため、PHP コードとして実行する必要があるターゲット ファイル内のコードは、有効な PHP 開始タグと終了タグで囲む必要があります。

于 2009-04-04T23:08:02.383 に答える
2

PHP はインタープリター言語であるため、ファイルを実行せずに「インクルード」することはできません。「.h」は単なるファイル拡張子であることを忘れないでください。したがって、以前のコーダーは PHP を「.h」ファイルに入れていたかもしれませんが、それはまだ単なる PHP です。

発生している問題の詳細が役立つ場合があります。

于 2009-04-04T22:40:41.543 に答える
1

.htaccess ファイルを使用して以下を追加できます。

php_value auto_prepend_file /path/to/include-file.h


編集

.htaccess はモジュール バージョンの php でのみ機能することを読みました。

于 2009-04-04T22:41:59.670 に答える
1

それらをすべて .php 拡張子に変更する必要があります。ただし、.h のままにしておく場合は、Apache でマッピングを変更します。PHP ではなく、適切なインタープリターを介してファイルを実行するのは Apache です。PHP エンジンは、渡されたものをすべて処理します。

于 2009-04-04T22:46:18.800 に答える
0

includerequireは、インクルードされたファイルを実行します。readfileを使用している場合は、ファイルを PHP コードとして扱わずに単純にエコーします。

于 2009-04-04T23:01:27.313 に答える
-1

.h ファイルに<?phpディレクティブが「欠落」している場合は、インクルードから次のようなものに切り替える必要がある場合があります。

eval( file_get_contents("file.h") );

個人的には、できる限り eval を避けるようにしていますが、選択の余地がない場合もあります。

于 2009-04-05T18:01:29.990 に答える