2009-04-14 85 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文件並執行任意代碼。