php中的站点根相对路径混淆

时间:2012-10-22 07:10:47

标签: php directory relative-path

我正在尝试将图像上传到服务器,从上传的图像创建缩略图,并保存到mysql数据库的相对路径。 。 。 。图像路径是

     /mysite/images/

来自我的网站根目录(在我的本地测试环境中是wamp / www / mysite / images)

现在,我正在使用

执行目录检查
   if(!is_dir($path) && !is_writable($path)){
    throw new Exception ("$path is not valid .. ");
    }

其中path是/ mysite / images /,认为初始'/'表示根。

但是,该脚本抛出了一个异常,说明了无效的路径名和我的

     move_uploaded_file($tmp_name, $path.$filename)

也没有用。

PS:路径mysite / images /也会抛出错误并且文件没有被移动

现在,我已经通过手动将文档根附加到路径名来进行目录检查和移动文件,现在看起来像

      if(!is_dir($_SERVER['DOCUMENT_ROOT'].$path) && !is_writable($_SERVER['DOCUMENT_ROOT'].$path)){
    throw new Exception ("$path is not valid .. ");
    }

      move_uploaded_file($tmp_name, $_SERVER['DOCUMENT_ROOT'].$path.$filename)

我也改变了路径

    mysite/images/ 

删除用于站点根目录的初始斜杠。这完美地工作

但是,我无法理解为什么目录检查和移动上传的文件片段没有采用站点根相对链接。

感谢任何想法。

2 个答案:

答案 0 :(得分:1)

您的网站路径不是wamp/www/mysite/images

您正在使用网络服务器,您无法访问驱动器,如:c:/ wamp ....

在线后,您将如何访问您的文件? Linux没有c:/ ...

您的网站路径为:http://localhost/mysite/

如果您的代码写得正确,您的图片路径为:http://localhost/mysite/images./images

所以,这样做:

define('ROOT', $_SERVER['DOCUMENT_ROOT']);

include_once(ROOT."/mycfgfile.php");

include_once(ROOT."/includes/mycfgfile.php");

答案 1 :(得分:1)

问题在于路径表示。

在linux / mysite中将尝试访问文件系统根目录中的目录。 Windows这可能不会产生错误。对于is_file()类API,它应该是绝对路径而不是相对路径。