PHP - 私のサイトでrequire_once()に直面する問題

私が開発しているサイトがあり、私は実際に起こっている問題を理解していません...

ホームページの表の中にリンクがあります。私がそれをクリックすると、ハイパーリンクされたページにいくつかのGETパラメータを提供することになっています。受信側のページで処理され、データベースが更新され、ホームページにリダイレクトされます。

私はいくつかの必要なPHPファイルを " require_once()"としてホームページに含めました。しかし、私は処理ページでそれを行うことはできません。それはいくつかの警告を出します。私は本当に理由を理解していないし、私はこの問題の解決策を知らない。助けてください!

ホームページのコード:

<?php require_once("includes/db_connection_open.php"); ?>
<?php require_once("includes/functions.php"); ?>
<?php include("includes/header_main.php"); ?>

<?php
 echo "<td>Process</td>";
?>

<?php include("includes/body_footer_main.php"); ?>
<?php require_once("includes/db_connection_close.php"); ?>

処理ページのコード:

<?php require_once("includes/db_connection_open.php"); ?>
<?php require_once("includes/functions.php"); ?>

//Processing codes

<?php require_once("includes/db_connection_close.php"); ?>

私が得ている警告は次のとおりです:

警告:require_once(/ db_connection_open.phpを含む)   [function.require-once]:ストリームを開くことに失敗しました:そのようなファイルはありません。   C:\ xampp \ htdocs \ MySite \のディレクトリは、1行目に\ process.phpを含みます。

     

致命的なエラー:require_once()[function.require]:開けませんでした   必須 'includes/db_connection_open.php'   (include_path = '.; C:\ xampp \ PHP \ PEAR')in   C:\ xampp \ htdocs \ MySite \は1行目に\ process.phpを含みます。

2
そのようなファイルはありません。
追加された 著者 k102,
私は以前、必要、特に require_once にはWindowsの既知の問題がいくつかあります。ファイルへのフルパスを使用してみてください。
追加された 著者 Rolice,
はい、回避策があります。 :)以下のコードは完全なパスを生成してインクルードしています。 ;)* UXesでは、コードを上に貼り付けたときにコードが動作するはずです。これは単なるヒントです。
追加された 著者 Rolice,
@ロリス:私はそうは思わない、それは動作しますが、問題は何か他のものだと思う...下の答えで私のコメントを見る真剣に、少し混乱している! :-(
追加された 著者 maxxon15,

2 答え

エラーが 'C:\ xampp \ htdocs \ MySite \ includes \ process.php in line 1'と表示されているため、あなたが現在インクルードディレクトリにいるようです。

しかし、インクルード/ 内に依頼して、ファイルが存在しないインクルード/インクルード/

あなたがAJAXと同様にインクルードで読み込まれたファイルを持っているために正しいパスを見つけるのに苦労しているなら、 __ DIR __ (または dirname(__ FILE __))を古いPHPのインストール)、正しいパスがあることを確認してください。

ですから、 process.php では、例えば以下のようになります:

require_once __DIR__.'/db_connection_open.php';
2
追加された
オランダ人? 「地図」という言葉はおそらく「ディレクトリ」なのでしょうか? :)
追加された 著者 toon81,
あなたは私を捕まえた:
追加された 著者 Kokos,
db_connection_open.php は、ルートにあるインデックスファイル(または少なくとも includes/から1レベル上)から必要です。そのため、 db_connection_open.php のinclude_pathはその時点でルートになっています。ただし、 db_connection_open.php が個別に読み込まれると、そのインクルードパスは includes/になります。 __ DIR __ からの開始を要求することで、現在のインクルードパスが何であるかについて混乱を避けることができます。
追加された 著者 Kokos,
私はこれまでに多くの問題を抱えていましたが、常に正しいパスを得るためにfile_existsとstuffをチェックしていました。 __ DIR __ は命を救う人です^^
追加された 著者 Kokos,
@ココス:それはあなたが言及した方法で動作します。しかし、 db_connection_open.php ファイルには require( "includes/connection_constants.php); ホームページを読み込んでいるときにエラーが表示されないのはなぜですか?
追加された 著者 maxxon15,
@Kokos:Ohkay !!!!今私はそれを得る! :-Dおかげで男! :-)
追加された 著者 maxxon15,
私は今からそれを使用しなければなりません...
追加された 著者 maxxon15,

さて、エラーは、あなたが試している場所にファイルが存在しないことを示しているようです。物の見た目では、 process.php ファイルは既に include ディレクトリにあります。したがって、ページ上の require_once()リンクを次のように更新する必要があります。

<?php require_once("db_connection_open.php"); ?>
<?php require_once("functions.php"); ?>
//Processing codes
<?php require_once("db_connection_close.php"); ?>

希望が助けてくれる!

0
追加された
ファイルが既にそのパスに存在するため、 includes/ディレクトリを削除する必要があります。 PHPファイルには、現在のパスの相対パスが含まれます。親ディレクトリにあるため( include/が正しく解決されるため)、ホームページから正しく機能します。
追加された 著者 BenM,
うーん...働くようだ。今私はいくつかのデバッグがあります。しかし、私は一つのことを理解していません。 「含む/ 」部分を削除する必要があるのはなぜですか? require( "includes/connection_constants.php"); というコードを db_connection_open.php ファイルに使用すると、正常に機能し、ホームページが正常に機能しました。
追加された 著者 maxxon15,
db_connection_open.php functions.php process.php connection_constants.php > db_connection_open.php require( "includes/connection_constants.php); db_connection_open.php >ホームページも必要です。ホームページを読み込んでいるときにエラーが表示されない理由は何ですか?
追加された 著者 maxxon15,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com