在PHP中正确导航相对本地路径
我在使用在PHP中正确导航相对本地路径,php,apache,lamp,Php,Apache,Lamp,我在使用getimagesize函数时遇到了问题。我从/item/ajax/image.php相对于域的HTTP根进行函数调用。我试图获取存储在/portfolio/15/image.jpg中的图像的尺寸。据我所知,将文件名作为参数,因此我尝试了以下方法: getimagesize('/portfolio/15/image.jpg') 及 但它们都只是抛出了PHP错误。请尝试在下面的路径前加前缀: $_SERVER['DOCUMENT_ROOT'] 输入的文件名与http根目录无关,但应该
getimagesize
函数时遇到了问题。我从/item/ajax/image.php
相对于域的HTTP根进行函数调用。我试图获取存储在/portfolio/15/image.jpg
中的图像的尺寸。据我所知,将文件名作为参数,因此我尝试了以下方法:
getimagesize('/portfolio/15/image.jpg')
及
但它们都只是抛出了PHP错误。请尝试在下面的路径前加前缀:
$_SERVER['DOCUMENT_ROOT']
输入的文件名与http根目录无关,但应该是web服务器文件系统中的现有路径 要查看出现了什么问题,您可以输入:
realpath('../../portfolio/15/image.jpg')
查看最终的目录
或使用:
imagesize(dirname(__FILE__) . '/../../portfolio/15/image.jpg')
以获得完整的目录资格
您也可以使用网址,但应指定完整的url:
getimagesize('http://yoursite.com/portfolio/15/image.jpg')
但是,这是一个较慢的选项。中的PHP“/”与Apache“/(web root)不同。在PHP中“/”表示系统根目录。您应该使用相对于PHP脚本位置的路径('portfolio/15/image.jpg',如果您的脚本和'portfolio'文件夹位于同一位置)相对路径始终从执行的文件开始,最有可能是index.PHP。对于包含的文件也是如此。这意味着在项目中的任何文件中,相对路径都从index.php开始。(以前完成的
chdir()
除外)
我认为像“../../file.ext”
之类的路径是非常糟糕的代码。定义一个常量,该常量具有应用程序的完整路径(例如:$\u SERVER['DOCUMENT\u ROOT']
),并将其添加到您正在使用的任何路径之前
例如:
# somewhere in your index.php
define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
# in any included file
$my_path = ROOT_PATH."/portfolio/14/image.jpg"
这是定义路径的最干净、最可读的方法。相对路径将与您正在执行的当前PHP脚本相关,而不是与服务器的文档根相关。我通常尝试引用具有绝对路径的文件。(使用配置文件设置基本目录)“/portfolio/15/image.jpg”不是相对路径。它是绝对的,因为它以“/”开头,从根开始。
# somewhere in your index.php
define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
# in any included file
$my_path = ROOT_PATH."/portfolio/14/image.jpg"