csv文件赢得';t通过php上传器上传
我在WordPress中运行此自定义上载脚本,因为我不想/不需要使用内置WordPress脚本。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 ($_
如果上载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);