簡體   English   中英

PHP move_uploaded_file 無法進入公共服務器

[英]PHP move_uploaded_file not working into public server

我正在嘗試將我的 php 項目上傳到公共服務器。 我在創建產品或編輯產品時制作了圖像上傳文件。 它在本地主機上工作,但是當我移動到公共服務器時,它不起作用。 我認為 move_uploaded_file 部分不起作用。 如何更改鏈接? 或者我必須改變什么? 當我看到 Filzilla 時,我可以看到它是“/www/eshopProject/inventory_images”的遠程站點。 索引文件是“/www/eshopProject/storeAdmin”。 我必須像這樣更改鏈接嗎? 我不知道如何更改鏈接。 你可以幫幫我嗎? 將圖像上傳到公共服務器不起作用..是否有任何安全問題? 或者其他的東西? 請幫我。 謝謝。

--index.php--

$pid = mysql_insert_id();
//Place image in the folder
$newname = "$pid.jpg";
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/product_$newname");

首先檢查評論中提到的目錄的權限。 如果您有 shell 訪問權限“chmod 777 target_dir”或“chmod 707 target_dir”就足夠了。

第二次嘗試使用 if 和 file_exists 函數( http://php.net/manual/en/function.file-exists.php )調試它。

像這樣的東西。

$uploadedFile = $_FILES['fileField']['tmp_name'];
$destination = "../inventory_images/product_$newname";

if(file_exists($uploadedFile))
{
   echo "file uploaded to temp dir";
}
else
{
   echo "file upload failed";
   exit();
}

if(move_uploaded_file($uploadedFile, $destination))
{
   echo "upload complete";
}
else
{
   echo "move_uploaded_file failed";
   exit();
}

您還可以使用FILEDIR常量( http://php.net/manual/en/language.constants.predefined.php )檢查您當前的工作目錄。

嘗試這個。

echo __FILE__;
echo dirname(__FILE__);
echo __DIR__;

確保您也為您嘗試上傳的文件夾設置了寫入文件權限。

使用copy()方法。 對我來說它奏效了。

copy($tmp_file, Destination) or
copy($tmp_image, IMAGE_DIRECTORY . SAM . $product_image); 

我建議將文件夾設置為“755”權限並重試。 這將使權限更嚴格。

這個問題有點老了,但我最近遇到了一個類似的問題,即使在上傳文件夾上有 777 權限,它也不起作用。 問題是 SELinux ( https://wiki.centos.org/HowTos/SELinux ) 處於強制模式,所以我不得不將其更改為許可模式,然后上傳工作正常。 我希望這可以幫助遇到這個問題的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM