1

これまでにこれに遭遇したことはありませんが、if()ステートメント内でユーザー作成関数をテストする際に問題がありますか?

別のサーバーにある別のPHPインクルードファイル(「myPhpInclude.php」と呼ばれる)に次のものがあります。

<?php

error_reporting(E_ALL);
ini_set('display_errors','On');

function displayIt($phrase = NULL) {
    if (is_null($phrase)) return false;
    else return true;
}

if ($_SERVER['REMOTE_ADDR'] == '123.456.789.012') { /* my ip address */
    echo 'include file is coming in ok...';
}

?>

PHPインクルードファイルとは別のサーバーにある私のHTMLドキュメントからの抜粋:

<?php include('http://mydomain.com/includes/myPhpInclude.php'); /* the displayIt() function is contained in this include file */ ?>

...

<div id="content">
<?php if (displayIt('on')) { /* <-- MY PROBLEM ORIGINATES HERE */?>
    <p>Some content.</p>
<? } ?>
</div>

Webページはif()ステートメントの時点でレンダリングを停止し、エラーを返しません。PHPエラーデバッグがアクティブ化され、オンになっています。

ありがとう。

4

3 に答える 3

3

待って待って待って、$phraseと$phaseはありますか?タイプミスだと思います。

三:

function displayIt($phrase = NULL) { <== phrase
    if (is_null($phase))             <== phase

そうでない場合は、try {}ブロックに入れてみてくださいecho displayIt('on');。何らかの理由で、falseが返される可能性があります。

編集:試してinclude('http://mydomain.com/includes/myPhpInclude.php');みるinclude('./includes/myPhpInclude.php');か、インクルードされたファイルのファイルシステムパスに置き換える代わりに。

cross_domain_includeが効果的だったとしても、URLからphpファイルをフェッチしても、phpコードは得られませんが、出力(この場合は空になります)が得られます。

于 2012-05-09T14:55:52.890 に答える
2

問題はインクルードファイルにあります:

include('http://mydomain.com/includes/myPhpInclude.php');

通常のhttpリクエストを介しincludes/myPhpInclude.phpてサーバーからファイルをリクエストします。http://mydomain.com受け取るのはphpコードではなく、そのphpファイルを実行したときのWebサーバーからの出力です。そしてそれは特定の条件下でも:

PHP 4.3.0より前のWindowsバージョンのPHPは、allow_url_fopenが有効になっている場合でも、この関数を介したリモートファイルへのアクセスをサポートしていません。

あなたがする必要があるのは、例えば次のように、相対パス(またはファイルシステムへの絶対パス)を使用して、ローカルファイルシステムを介してファイルを含めることです。

include 'includes/myPhpInclude.php';
于 2012-05-09T15:27:54.203 に答える
1

2番目の変数で「フレーズ」のスペルが間違っています。

于 2012-05-09T14:55:43.127 に答える