2011-10-28 4 views
2

...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><a href='includes/process.php?id=".$arr['id']."'>Process</a></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"); ?> 

私は取得しています警告は、次のとおりです。

Warning: require_once(includes/db_connection_open.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\MySite\includes\process.php on line 1

Fatal error: require_once() [function.require]: Failed opening required 'includes/db_connection_open.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\MySite\includes\process.php on line 1

+0

そのようなファイルがありません。 – k102

+0

私は以前、* require *、特に** require_once **を読んでいましたが、Windowsではいくつかの既知の問題があります。 ファイルへのフルパスを使用してみてください。 – Rolice

+0

@Rolice:そうは思わない、うまくいくが、問題は何か他のものだと思う...下の答えで私のコメントを見る 真剣に、少し混乱している! :-( – maxxon15

答えて

2

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

しかし、includes/の範囲内で依頼しているため、includes/includes/にはファイルが存在しません。

AJAXのようにインクルードして読み込まれたファイルがあるため、正しいパスを見つけるのに問題がある場合は、正しいパスがあることを確認するために__DIR__(または古いPHPインストールではdirname(__FILE__))を使用できます。例えばでしょうprocess.phpでそう

require_once __DIR__.'/db_connection_open.php'; 
+1

Dutchman? "map"という単語はおそらく "ディレクトリ"になりますか? – toon81

+0

WOOPS、あなたは私を捕まえました:< – Kokos

+0

@Kokos:あなたは言及しましたが、** db_connection_open.php **ファイルには 'requir e( "includes/connection_constants.php);'が含まれています。 ** db_connection_open.php **ファイルは、Homeページの_required once_にもあります。だから、なぜホームページをロードしている間、エラーは表示されていませんか? – maxxon15

0

まあ、エラーが思えますあなたが試している場所にファイルが存在しないことを示します。助け

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

希望を:ページ上のごrequire_once()文に、あなたは次のようにリンクを更新する必要があるので、物事の外観によって、process.phpファイルはすでに、includesディレクトリに存在します!

+0

うーん...仕事をしているようだ。今私はいくつかのデバッグがあります。 しかし、私は1つのことを理解していません。 「** includes/**」の部分を削除する必要があるのはなぜですか? ** db_connection_open.php **ファイル内で同じコード( 'require(" include/connection_constants.php ");)を使用すると、正常に機能し、ホームページが正常に機能しました。 – maxxon15

+0

ファイルがすでにそのパスに存在するため、 'includes /'ディレクトリを削除する必要があります。 PHPファイルには、現在のパスの相対パスが含まれます。親ディレクトリにあるので( 'includes /'が正しく解決するため)、ホームページから正しく機能します。 ** ** db_connection_open.php ** **のfunctions.php ** ** process.php ** ** connection_constants.php ** ** db_connection_close: – BenM

+0

私が持っているファイルの一部がフォルダを含んでいます これらのうち、** db_connection_open.php **にはrequire( "includes/connection_constants.php);" ** db_connection_open.php **ページもホームページに_一度必要です。ホームページ:いいえ、エラーは表示されません...? – maxxon15

関連する問題