私がそのようなフォルダ構造を持っているとしましょう:
C:\xampp\htdocs\MyProject
|-- Lib
| |-- dbconn.php
|-- SuperSite
| |-- index.php
| |-- misc
| |-- misc.php
index.php には次のような行があります。
require("../Lib/dbconn.php");
これは、Web サーバーから index.php にアクセスする場合は機能しますが、コマンド ラインから index.php を実行すると、require() は失敗します。
C:\>php C:\xampp\htdocs\MyProject\SuperSite\index.php
Warning: include(../Lib/dbconn.php): failed to open stream: No such file or directory in C:\xampp\htdocs\MyProject\SuperSite\index.php
ただし、パスの前に「/」を追加しても失敗しません。
require("/../Lib/dbconn.php");
次のような他のファイルが必要な場合も失敗しません。
require("misc/misc.php");
また
require("/misc/misc.php");
コマンド ラインからスクリプトを実行するときに、「..」で始まるパスの前に「/」が必要なのはなぜですか?
(Web サーバーからアクセスする場合 (ブラウザを使用) は、先頭に「/」が付いているパスと付いていないパスが機能します)