Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
csv文件赢得';t通过php上传器上传_Php_Html_Wordpress_Csv - Fatal编程技术网

csv文件赢得';t通过php上传器上传

csv文件赢得';t通过php上传器上传,php,html,wordpress,csv,Php,Html,Wordpress,Csv,我在WordPress中运行此自定义上载脚本,因为我不想/不需要使用内置WordPress脚本。 如果上载csv文件,则会出现错误:无法复制文件test.csv,请重试 无法理解为什么会出现此错误 这是剧本 <?php $updir = 'wp-content/themes/ddpp/upload_csv/'; $max_size = 100; $allowtype = array('csv'); if (isset($_FILES['field_name'])) { if ($_

我在WordPress中运行此自定义上载脚本,因为我不想/不需要使用内置WordPress脚本。
如果上载csv文件,则会出现错误:
无法复制文件test.csv,请重试
无法理解为什么会出现此错误

这是剧本

<?php
$updir = 'wp-content/themes/ddpp/upload_csv/';
$max_size = 100;  
$allowtype = array('csv'); 
if (isset($_FILES['field_name'])) {

if ($_FILES['field_name']['error'] > 0) {
echo 'Error: '. $_FILES['field_name']['error']. '<br />';
}
else {
// get the name, size (in kb) and type (the extension) of the file
$fname = $_FILES['field_name']['name'];
$fsize = $_FILES['field_name']['size'] / 1024;
$ftype = end(explode('.', strtolower($fname)));

// checks if the file already exists
if (file_exists($updir. $fname)) {
  echo 'The file: '. $fname. ' already exists';
}
else {
  // if the file not exists, check its type (by extension) and size
  if (in_array($ftype, $allowtype)) {
    // check the size
    if ($fsize <= $max_size) {
      // uses  function to copy the file from temporary folder to $updir
      if (!move_uploaded_file ($_FILES['field_name']['tmp_name'], $updir. $fname)) {
        echo 'The file '. $fname. ' could not be copied, try again';
      }
      else {
        echo $fname. ' ('. $fsize. ' kb) was successfully uploaded';
      }
    }
    else {
      echo 'The file '. $fname. ' exceeds the maximum permitted size, '. $max_size. ' KB';
    }
  }
  else {
    echo $fname. ' - invalid file type';
  }
}
  }
}
?>
<div style="display: inline-block; width: 25%; vertical-align: top;">
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="field_name" /><br />
    <input type="submit" name="submit" value="Submit" />
</form>

代码在这里失败了

  if (!move_uploaded_file ($_FILES['field_name']['tmp_name'], $updir. $fname)) {
    echo 'The file '. $fname. ' could not be copied, try again';
  }
这意味着move_上传的_文件无法执行您需要它执行的操作。检查php错误日志,可能会出现权限错误。您可能已经使用FTP或其他方法创建了目录,因此apache无法写入该目录

为了允许apache访问,您有两个选项。将apache添加到允许写入的组中,或者干脆让apache成为所有者。我总是发现,如果它是一个网站的目录,那么让apache成为所有者并没有什么坏处。如果您有SSH访问权限,请运行以下命令

chown -R apache /wherever/the/dir/is

让我们了解为什么会发生这种情况。出现错误
无法复制文件test.csv,请重试
,因此出现以下问题:

if (!move_uploaded_file ($_FILES['field_name']['tmp_name'], $updir. $fname))
根据的文件,这是错误的原因如下:

如果文件名不是有效的上载文件,则不会执行任何操作,并且move_uploaded_file()将返回FALSE

如果文件名是有效的上载文件,但由于某种原因无法移动,则不会执行任何操作,并且move_uploaded_file()将返回FALSE此外,将发出警告。

确保已启用警告,以帮助您进一步诊断问题(将其添加到脚本顶部):


最常见的问题是文件目录不可写,因为PHP无法在目标目录中创建文件名。确保目录存在,PHP进程可以写入该文件夹。

您正在上载的文件的文件名是什么,文件有多少字节?文件名
test.csv
6KB
为什么?
echo$updir$fname
并确保目录具有写入权限。echo为我提供了正确的路径和文件名。权限设置正确。它正在本地运行您使用的是相对路径,应该检查它是否真的是您所认为的,例如使用
realpath($updir)
。请查看我更新的问题。我添加了您建议的警告,发现路径名不正确。我现在正在尝试获取文件夹的静态路径,它只是一个路径位置……你在上面的评论中说过“echo为我提供了正确的路径和文件名”。@InteractiveEyeah。我想是检查错了。我的错。
if (!move_uploaded_file ($_FILES['field_name']['tmp_name'], $updir. $fname))
ini_set('display_errors', 1);
error_reporting(E_ALL);