通过 php 在服务器 apache 上上传文件

Uploading file on server apache via php

我正在尝试将文件从我的网站下载到我的服务器,但找不到我做错的原因或位置。

这是我的 php 代码:

    $fn = $_FILES['file']['name'];
    if (is_writable('.')) { 
        echo "Writable<BR>";
    } else {
        echo "Not writable<BR>";
    }
    $upfile = './'.basename($fn);
    echo $upfile.'<BR>';
    shell_exec("echo 'baaaaah' > test.baaaah");
    $f = $_FILES['file']['tmp_name'];
    echo $f.'<BR>';
    if (is_uploaded_file($f)) { echo "uploaded<BR>"; } else { echo "not uploaded<BR>";} 
    $com = "test - f ".$f." && echo 'F' || echo 'N'";
    echo $com.'<BR>';
    echo shell_exec($com).'<BR>';
    if (move_uploaded_file($f,$uploadfile)) {
        echo "File transfer OK<BR>";
    } else {
        echo "File transfer NOK<BR>";
    }
    print_r($_FILES);

这里是网站输出:

Writable
./flag.jpg
/tmp/phpyKvhEz
uploaded
test - f /tmp/phpyKvhEz && echo 'F' || echo 'N'
N 
File transfer NOK
Array ( [file] => Array ( [name] => flag.jpg [type] => image/jpeg [tmp_name] => /tmp/phpyKvhEz [error] => 0 [size] => 1660 ) )

所以首先我检查我的文件夹是否可写(它不应该是“.”但我搬到这里是因为我想要的文件夹也不起作用(与“.”相同的行为通过... )) => 检查

然后我尝试shell_exec这里的文件只是为了确定=>检查,文件在服务器上

然后我检查是否在服务器上创建了临时文件: - 检查,反正 is_uploaded 认为文件在这里 - 不检查,但对临时文件的测试不起作用(并且由于不应在脚本结束之前删除该文件,所以它应该在此处看到该文件恕我直言?)

然后我尝试让 move_uploaded_file => 不检查

然后我打印 $_FILES,它没有任何可疑之处(错误 = 0,文件名与我之前看到的相符)。

我不知道哪里出了问题,也不知道哪里出了问题><

$uploadfile 在您的代码中未定义。更改它或将其设置为“.”它应该工作。