php中的站点根相对路径混乱
我正在尝试将图像上传到服务器,从上传的图像创建缩略图,并将相对路径保存到mysql数据库。图像路径为php中的站点根相对路径混乱,php,directory,relative-path,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 .. "); } 其中路径为/m
/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/
删除站点根目录的初始斜杠。这是工作正常的
但是,我无法理解为什么目录检查和移动上传的文件片段没有获取站点根相对链接
欢迎提出任何想法。您的网站路径不是
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");
或
问题在于路径表示
在linux/mysite中,将尝试访问文件系统根级别的目录。Windows这可能不会创建错误。对于is_file()类API,它应该是绝对路径,而不是相对路径 这个函数在这里也可能有用,相关的:这个答案和下面的答案-我必须使用ROOT.$path always检查目录权限吗?在我的Web服务器上,我已经手动设置了文件夹权限;而且我不会每次在文件夹中写入图像时都检查这些设置;脚本可以在该文件夹中写入,因为它是来自本地主机的请求;访问者不能在该文件夹中写入,因为请求不是来自localhost;在我的服务器上,如果图像类型是jpeg,则将其写入,如果不是,则删除它即使我的网站在www.example.com上联机,请求也来自localhost,因为apache web服务器位于该计算机上
include_once(ROOT."/includes/mycfgfile.php");