3

私はLAMPスタックを使用してPHPアプリケーションを開発しています。私はrequire_onceを使用してクラスファイルをインクルードしています。これらのクラスファイルの関数を複数のPHPページで使用する必要があります。したがって、require_onceを使用して、必要なすべてのPHPページにこれらのクラスファイルを含めています。ただし、これらのクラスファイルを複数のページに含めると、PHPファイルは空白になります。何も表示されません。ソースの表示にも何も表示されません。

ファイル:test.php、process.php、class.test.php

test.phpには

<?php
    session_start();
    require_once 'classes/class.test.php';

    .
    Few more classes
    .
    .  


?>

<html>   
    <form name = "myForm" method="POST" action="process.php">
       <input type = "text" name="username" value=""/>
       <input type = "submit" value="Submit" />
    </form>   
</html>

process.php

<?php 
    session_start();
    require_once 'classes/class.test.php';

    $obj_test = new test();
    $obj_test->test();
?>

class.test.php

<?php
    session_start();
    require_once 'class.misc.php';
    require_once 'config.php'; //DB connection details

    function test()
    {
        $obj_misc = new misc();
        $id = $obj_misc->random_ID();
        $username = $_POST['username'];             

        $query = "INSERT INTO test_table VALUES ('$id','$username',NOW());
        mysql_query($query);
    }
?>

これで、空白のページが返されます。process.phpのrequire_onceをコメントアウトすると、test.phpページにフォームが表示されますが、フォームを送信すると、process.phpは「クラステストが見つかりません」というエラーをスローします。

私は過去2週間この問題に苦しんでいます。:(それ以前は問題なく動作していました。何が悪かったのかわかりません。助けてください。

4

5 に答える 5

5

process.php の PHP コードにエラーがあります。セミコロンがありません:

require_once 'classes/class.test.php'

次のようにする必要があります。

require_once 'classes/class.test.php';

それでも問題が解決しない場合は、コードのどこかに別のエラーがある可能性があります。完全なソースにアクセスできなければ、多くのことはできません。

今後の参考として、ページが空白になった場合、通常は PHP ソース コードに問題があります (つまり、何らかの解釈エラー)。優れたデバッグ戦術の一環として、display_errorserror_reportingを調べます。

于 2012-11-22T07:28:28.573 に答える
3

で試してみてください

error_reporting(E_ALL);

于 2012-11-22T07:28:15.073 に答える
1

エラー報告がオフになっているようです。エラーログをチェックして、サイレントに失敗したときにどの例外がスローされているかを確認する必要があります (これにより、もう少し洞察が得られます)。

さらに、これをプロセス スクリプトの先頭に追加することもできます。

error_reporting(E_ALL);
于 2012-11-22T07:27:28.247 に答える
0

Require once は関数です ...

括弧を追加してみてください...

 require_once( 'classes/class.test.php' );    
于 2012-11-22T07:29:57.497 に答える
0

SQLクエリで終了qouteが欠落しているようです

$query = "INSERT INTO test_table VALUES ('$id','$username',NOW());
mysql_query($query);

する必要があります

$query = "INSERT INTO test_table VALUES ('$id','$username',NOW())";
mysql_query($query);
于 2012-11-22T08:09:07.530 に答える