我在使用getimagesize
功能时遇到了麻烦。我正在从/item/ajax/image.php
相对于域的HTTP根进行函数调用。我正在尝试将图像的尺寸存储在/portfolio/15/image.jpg
。根据我的理解,the function将文件名作为参数,所以我尝试了以下内容:
getimagesize('/portfolio/15/image.jpg')
和
getimagesize('../../portfolio/15/image.jpg')
但他们都只是抛出PHP错误。
答案 0 :(得分:4)
相对路径始终从执行的文件开始,这很可能是index.php。对于包含的文件也是如此。这意味着在项目中的任何文件中,相对路径从index.php开始。 (除了chdir()
之前完成)
我认为拥有像"../../file.ext"
之类的路径是非常糟糕的代码。定义一个具有应用程序完整路径的常量(例如:$_SERVER['DOCUMENT_ROOT']
)并将其添加到您正在使用的任何路径中。
示例:
# somewhere in your index.php
define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
# in any included file
$my_path = ROOT_PATH."/portfolio/14/image.jpg"
这是 imho 定义路径最干净,最易读的方法。
答案 1 :(得分:3)
尝试在路径下面添加前缀:
$_SERVER['DOCUMENT_ROOT']
答案 2 :(得分:1)
在PHP中,“/”与Apache“/”(Web根目录)不同。在PHP中,“/”表示系统根目录。您应该使用相对于PHP脚本位置的路径(如果您的脚本和'portfolio'文件夹位于同一位置,则为'portfolio / 15 / image.jpg')
答案 3 :(得分:0)
您输入的文件名与http根目录无关,但应该是Web服务器文件系统中的现有路径。
要查看出现了什么问题,您可以输入:
realpath('../../portfolio/15/image.jpg')
查看最终的目录。
或使用:
imagesize(dirname(__FILE__) . '/../../portfolio/15/image.jpg')
获取完整的目录资格。
作为替代方案,您可以使用网址,但是您应该指定完整的网址:
getimagesize('http://yoursite.com/portfolio/15/image.jpg')
然而,这是一个较慢的选择。