0

PHPインクルードパスについて質問がありました。2つの環境では動作が異なります。

フォルダ構造:

ウィンドウズ

|-C:\wamp\www\cms\themes\child
|-C:\wamp\www\cms\themes\parent

Linux

|-/var/www/html/cms/themes/child
|-/var/www/html/cms/themes/parent

Linux環境

var_dump(realpath('/')); // means /
var_dump(realpath('/../parent/scripts/import.php')); //boolean false
include('/../parent/scripts/import.php'); //it will not work
include('../parent/scripts/import.php'); //it will not work, except it will reference parent folder

Windows環境

var_dump(realpath('/')); //C:\
var_dump(realpath('/../parent/scripts/import.php')); //boolean false
include('../parent/scripts/import.php'); //am thinking it will work at first, but it does not work in windows (feel weird)
include('/../parent/scripts/import.php'); //it work in windows (feel weird)

ベストプラクティスは、両方のプラットフォームで機能することです。

include(realpath(dirname(__FILE__)).'/../parent/scripts/import.php');

しかし、私はこれについて知りたいのですが、それはPHPのバグですか、それとも何が原因ですか?

4

1 に答える 1

-1

いいえ、バグではありません。window ファイル システムと linux ファイル システムの違いによるものです。

于 2013-01-31T07:54:04.843 に答える