2

グローバルテンプレートページと、/layout_header.phpに保存されている他のファイルがあります/aFolder/index.php

/layout_header.php、私は持っています:

<?php
    // Reference to scripts and other files
    echo "<img src='img/lollipop.png'/>";
    echo "<script src='js/move.js'/>";
    echo "<a href='aFolder/movement.php'>Click here!</a>";
?>

/aFolder/index.php、私は持っています:

<?php
    include "../layout_header.php";
?>

これで/aFolder/index.php、ファイルの呼び出しに問題はありません/layout_header.php。残念ながら、ディレクトリが現在/aFolderになっているため、次の問題に直面しています。

  • /aFolder/img/lollipop.png画像が(存在しない)としてリンクされているため、画像を表示できません
  • 上記の理由により、スクリプトを実行できません。
  • 上記の理由により、URLが無効です。

私のスクリプトとcssファイルの多くは相対パスを使用しています。つまり、index.phpルートフォルダに配置されている場合は、すべて正常に機能します。

サブディレクトリ内のファイルの問題を解決するにはどうすればよいですか?

4

4 に答える 4

7

すべての PHP フレームワーク (少なくとも専門家) で、APPPATH、BASEPATH などの変数/定数を確認できます。そのため、プロジェクトで同様の変数/定数を定義し、必要に応じて使用する必要があります。

<?php
// a.php: assuming this included everywhere at very first line 
// and located in root directory
// preferable, define a constant instead of variable, cos it 
// may used in functions directly without "global $ROOT";

// for "include"
define('ROOT', __DIR__); // for PHP >= 5.3
define('ROOT', realpath(dirname(__FILE__)));  // for PHP < 5.3
// for "src, href" etc
define('HTTP', $_SERVER['SERVER_NAME']); // for local development support i.e foo.com.local

// includes
include ROOT .'/layout_header.php';
include ROOT .'/classes/mailer.php';
include ROOT .'/foo/bar/baz.php';
...

// src,href
printf('<script src="%s/js/move.js" />', HTTP);
printf('<img src="%s/img/lollipop.png" />', HTTP);

print '<a href="'. HTTP .'/aFolder/movement.php">Click here!</a>';
...
?>
于 2013-01-30T17:34:10.690 に答える
5

相対的な場合は、常に $_SERVER['DOCUMENT_ROOT'].'path/to/file' を使用して PHP ファイルを含めます。

また、画像とスクリプト ファイルと css ファイルには yourdomain.com/path/to/file.extension を使用します

于 2013-01-30T17:04:12.997 に答える
2

相対ではなく完全なルートを使用してみましたか。

define('WEB_ROOT', 'http://yourdomain.com/');  // localhost path etc


echo "<img src=".WEB_ROOT."img/lollipop.png'/>";
echo "<script src=".WEB_ROOT."'js/move.js'/>";
echo "<a href='".WEB_ROOT."aFolder/movement.php'>Click here!</a>";
于 2013-01-30T17:18:15.233 に答える
0

あなたができる多くの解決策があります:

  • プロジェクトのルートを変更するには、構成ファイルに移動します。

  • index.php をフォルダー aFolder/index.php に残し、そこから別のファイルにリダイレクトします。

  • htacess ファイルを変更してリダイレクトを行う

  • サーバーから URL を取得して、すべてのパスを変更します。

2 番目のものを使用します (インデックスを複製し、/layout_header.php に配置します) aFolder/index.php からコンテンツを削除し、別のインデックス ファイルへのリダイレクトを追加します。

<?php

   header( 'Location: ../index.php' ) ;

?>
于 2013-01-30T17:10:14.357 に答える