2009-04-14 136 views
0

当我通过move_uploaded_file()保存上传的文件时,确定无法使用绝对URL我必须使用相对值。我的网站有两个根目录,一个用于http端,另一个用于https端:分别为httpdocs和httpsdocs。所以如果我的脚本在https端,我怎样才能将文件保存到http端的位置?PHP:用PHP将文件保存到不同的根目录?

谢谢!

UPDATE 行,所以它看起来像我使用了错误的绝对路径约定我这样做是这样的:

$dir = 'https://www.mydomain.com/masonic_images/'; 
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name); 
+0

为什么你不能使用绝对路径? – 2009-04-14 19:05:22

+0

@Chad当我使用绝对路径时出现错误。 “警告:move_uploaded_file():在服务器配置中禁用URL文件访问。”这是我可以在.htaccess文件中调整的东西吗? – 2009-04-14 19:10:39

+0

你可以显示move_uploaded_file调用吗?这听起来像你把一个URL而不是一个文件路径,这是行不通的。 – 2009-04-14 19:11:55

回答

1

httpdocs和httpsdocs目录是否位于同一父文件夹中?如果是这样,只需使用move_uploaded_file中第二个参数的相对路径将文件放置在另一个根目录中即可。

例如:

此代码假定上传脚本位于httpsdocs的根目录下,并且要将该文件保存到httpdocs目录。

2

如果你不能使用绝对路径,因为你不知道什么绝对路径是,使用PHP的realpath()来确定它是什么,然后使用它。

5

move_uploaded_file()不接受任一参数的URL。目标是文件系统上的绝对路径。

<?php 
$dir = '/var/www/httpsdocs/'; // Adjust to your configuration 
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name); 

As @apphacker建议。您可以使用realpath(__FILE__)来确定文件的绝对路径。

1

请注意,由于您将上传的文件放在httpdocs之内,因此可以上传php文件并执行任意代码。