1

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

     /mysite/images/

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

现在,我正在执行目录检查

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

其中路径是 /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/ 

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

但是,我不明白为什么目录检查和移动上传的文件片段没有获取站点根目录的相对链接。

任何想法表示赞赏。

4

2 回答 2

1

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

您正在使用 Web 服务器,您无法访问驱动器,例如: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");
于 2012-10-22T07:35:29.523 回答
1

问题在于路径表示。

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

于 2012-10-22T07:40:27.483 回答