linux服务器上的图像上载(PHP)

linux服务器上的图像上载(PHP),php,apache,Php,Apache,我正在尝试将图像上载到服务器。当我在本地pc上使用时,以下代码起作用,但当我在服务器上尝试时,图像不会上载 $img = $_FILES['file_uploaded']['name']; $image_temp = $_FILES['file_uploaded']['tmp_name']; if(move_uploaded_file($image_temp, "uploads/" . $img)){ $fullpath = dirname(__FILE__) . '\\images\

我正在尝试将图像上载到服务器。当我在本地pc上使用时,以下代码起作用,但当我在服务器上尝试时,图像不会上载

$img = $_FILES['file_uploaded']['name'];
$image_temp = $_FILES['file_uploaded']['tmp_name'];
if(move_uploaded_file($image_temp, "uploads/" . $img)){
    $fullpath =  dirname(__FILE__) . '\\images\\' . $img;
}
else
    echo 'Failed!';

您在服务器上有相同的文件权限吗?文件夹
/var/www/html/upload
是否存在并且可由web服务器用户写入(通常为www数据)

尝试在服务器终端中运行以下命令:

sudo su
mkdir /var/www/html/uploads
chmod -R 775 /var/www/html/uploads
chown -R www-data:www-data /var/www/html/uploads
如果使用www数据,请使用您自己的web服务器用户进行更改

“固定”脚本:

$img = $_FILES['file_uploaded']['name'];
$upload_dir = "/var/www/html/uploads/";
$image_temp = $_FILES['file_uploaded']['tmp_name'];
if (file_exists($image_temp)) {
     echo "Temp file doesn't exist.";
     return false;
}
$move_file = move_uploaded_file($image_temp, $upload_dir . $img);
if ($move_file) {
    $fullpath =  $upload_dir . $img;
}
else {
    echo 'Failed!';
    return false;
}
您应该编写额外的检查,以便知道应用程序在哪里失败


关于安全性,您永远不应该信任用户。在本例中,我们使用了用户提供的文件名(
$\u FILES['file\u uploaded']['name']
),他可以使用该文件在指定目录之外进行写入,甚至可以读取。

您在服务器上是否具有相同的文件权限?文件夹
/var/www/html/upload
是否存在并且可由web服务器用户写入(通常为www数据)

尝试在服务器终端中运行以下命令:

sudo su
mkdir /var/www/html/uploads
chmod -R 775 /var/www/html/uploads
chown -R www-data:www-data /var/www/html/uploads
如果使用www数据,请使用您自己的web服务器用户进行更改

“固定”脚本:

$img = $_FILES['file_uploaded']['name'];
$upload_dir = "/var/www/html/uploads/";
$image_temp = $_FILES['file_uploaded']['tmp_name'];
if (file_exists($image_temp)) {
     echo "Temp file doesn't exist.";
     return false;
}
$move_file = move_uploaded_file($image_temp, $upload_dir . $img);
if ($move_file) {
    $fullpath =  $upload_dir . $img;
}
else {
    echo 'Failed!';
    return false;
}
您应该编写额外的检查,以便知道应用程序在哪里失败


关于安全性,您永远不应该信任用户。在本例中,我们使用了用户提供的文件名(
$\u FILES['file\u uploaded']['name']
),他可以使用该文件在指定目录之外进行书写,甚至可以进行阅读。

嗨,Sigismund,我想知道我的语法是否正确?抱歉,没有真正检查语法。是的,这不是真的对。您正在使用move\u上传的\u文件两次,您可能应该只使用一次。用于复制的路径也都是错误的$_服务器['DOCUMENT_ROOT']的前缀是/var/www?实际上,我想在root/var/www/html/uploads文件夹中上载图像。请检查此网站:。DOCUMENT\u ROOT将为您提供执行当前脚本的文件夹的路径,您应该将其从脚本中删除,或者像下面这样使用它。“上传/如果您的脚本位于/var/www/htmlindex.php位于/var/www/html,并且上面的脚本位于/var/www/html/Test,我正在使用include_once'Test/Test.php';嗨,Sigismund,我想知道我的语法是否正确?抱歉,没有真正检查语法。是的,它不正确。您正在使用move_upl。”加载两次\u文件,您可能只需要使用一次。用于复制的路径也都是错误的。$\u服务器['DOCUMENT\u ROOT']是在/var/www.?实际上,我想在root/var/www/html/uploads文件夹中上载图像。请检查此网站:。DOCUMENT\u root将为您提供执行当前脚本的文件夹的路径,您应该将其从脚本中删除,或者像这样使用它。$\u SERVER['DOCUMENT\u root'上传/如果您的脚本位于/var/www/htmlindex.php位于/var/www/html,并且上面的脚本位于/var/www/html/Test,我正在使用include_once'Test/Test.php';