Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menyelesaikan masalah ralat "tidak boleh bergerak" apabila Curl memuat naik fail ke PHP

Saya ingin menyediakan perkhidmatan HTTP mudah (menggunakan PHP) untuk menerima fail daripada komputer lain menggunakan Linux curl dan Windows Powershell. Saya telah membaca dari sumber internet termasuk PHP tidak boleh memuat naik fail ke pelayan? Gunakan cURL untuk memuat naik data POST bersama-sama dengan fail. Siaran ini membantu saya menyelesaikan masalah parameter, tetapi bukan semua.

Ini kod saya (lihat di sini)

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
?>

Ini adalah arahan yang saya gunakan dan menerima respons ralat.

# bash
curl -X POST -F "id=fileToUpload" -F "fileToUpload=@null.txt" http://127.0.0.1/upload.php

Ini ialah /var/apache2/error.log

[Sun Aug 27 05:13:13.392185 2023] [php7:warn] [pid 77733] [client 127.0.0.1:54732] PHP Warning:  move_uploaded_file(uploads/null.txt): failed to open stream: No such file or directory in /var/www/html/upload.php on line 5
[Sun Aug 27 05:13:13.392251 2023] [php7:warn] [pid 77733] [client 127.0.0.1:54732] PHP Warning:  move_uploaded_file(): Unable to move '/tmp/phpynhUuv' to 'uploads/null.txt' in /var/www/html/upload.php on line 5

Muat naik status

$ ll   
> total 8
> drwxr-xr-x 2 root     root     4096 Aug 27 05:08 html
> drwxrwxrwx 2 www-data www-data 4096 Jun  2 22:38 uploads

Boleh sesiapa beritahu saya apa yang salah dengan kod saya? Sebarang nasihat akan sangat dihargai.

P.S. Terima kasih kepada ADyson dan hanshenrik atas tunjuk ajar mereka. Masalah ini disebabkan oleh dua perkara: (1) menggunakan -F sebagai arahan curl, (2) membetulkan laluan PHP agar sesuai dengan persediaan folder saya.

P粉904191507P粉904191507219 hari yang lalu374

membalas semua(1)saya akan balas

  • P粉348088995

    P粉3480889952024-02-18 10:02:04

    -dapplication/x-www-form-urlencoded 格式发送数据,PHP 自动将其解析为 $_POST 超全局变量,而您的代码尝试从 $_FILES 超全局变量读取上传的文件,该文件据我所知,PHP仅解析multipart/form-data-requests,并且要使curl发送multipart/form-data请求,请使用-F

    curl -F @null.txt http://127.0.0.1/upload.php

    balas
    0
  • Batalbalas