美好的一天,我一直在关注一个教程并且非常努力地使这个脚本工作,我已经设法解决了很多问题但是我得到的一个常见问题是:
No such file or directory in /home/xxxxxxx/public_html/regForm.php on line 93
我想要的是让用户在注册时将个人资料照片上传到我的直播服务器/网站,这是我的表格和下面代码的一部分:
如果有经验的用户可以进行扫描并告知我出错的地方,我会非常感激,提前
HTML表格
<form ENCTYPE="multipart/form-data" name="registration-form" id="regForm" method="post" action="regForm.php">
:
:
Upload Picture: <INPUT NAME="file_up" TYPE="file">
<input type="submit" value="Register" name="register" class="buttono" />
</form>
上传脚本
$file_upload="true";
$file_up_size=$_FILES['file_up']['size'];
echo $_FILES['file_up']['name'];
if ($_FILES['file_up']['size']>250000){
$msg=$msg."Your uploaded file size is more than 250KB
so please reduce the file size and then upload.<BR>";
$file_upload="false";
}
if (!($_FILES['file_up']['type'] =="image/jpeg" OR $_FILES['file_up']['type'] =="image/gif"))
{
$msg=$msg."Your uploaded file must be of JPG or GIF. Other file types are not allowed<BR>";
$file_upload="false";
}
$file_name=$_FILES['file_up']['name'];
if($file_upload=="true"){
$ftp_server = "xxxxxx";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$ftp_username='xxxxxx';
$ftp_userpass='xxxxxx';
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
$file = $file_name;
// upload file
if (ftp_put($ftp_conn, "public_html/img/userPics", $file, FTP_ASCII)) //here is the problem with the path I suspect
{
echo "Successfully uploaded $file.";
}
else
{
echo "Error uploading $file.";
}
// close connection
ftp_close($ftp_conn);
}
答案 0 :(得分:3)
处理图像时,需要使用二进制格式。
FTP_BINARY而不是FTP_ASCII。
根据手册:
确保路径正确。这可能因服务器不同而不同。
您还需要一个尾部斜杠:
public_html/img/userPics/
^
否则,您的系统会将其解释为:
userPicsIMAGE.JPG
而不是预期的userPics/IMAGE.JPG
然而,你可能需要玩弄路径本身。 FTP就是这样有点棘手。
即:
/home/xxxxxxx/public_html/userPics/
img/userPics/
../img/userPics/
取决于文件的执行区域。
Root > ftp_file.php -img -userPics
该文件夹还需要具有要写入的适当权限。
通常是755。
如果您的系统尚未设置为捕获并显示错误/通知,请使用错误报告:
FTP手册中的一个例子:
<?php
ftp_chdir($conn, '/www/site/');
ftp_put($conn,'file.html', 'c:/wamp/www/site/file.html', FTP_BINARY );
?>
另一方面,使用&#34; true&#34;和&#34;假&#34;。你很可能想要检查真相
$file_upload=true;
而不是字符串文字$file_upload="true";
同样的事情
if($file_upload=="true")
到
if($file_upload==true)
和$file_upload="false";
检查虚假
到$file_upload=false;
阅读本手册:
这是最简单的类型。布尔值表示真值。它可以是TRUE或FALSE。
测试您的FTP连接,从https://stackoverflow.com/a/3729769/
拉出try {
$con = ftp_connect($server);
if (false === $con) {
throw new Exception('Unable to connect');
}
$loggedIn = ftp_login($con, $username, $password);
if (true === $loggedIn) {
echo 'Success!';
} else {
throw new Exception('Unable to log in');
}
print_r(ftp_nlist($con, "."));
ftp_close($con);
} catch (Exception $e) {
echo "Failure: " . $e->getMessage();
}
命名约定:
我还需要注意,在LINUX上,userPics
与userpics
不同,如果您的文件夹名称是小写字母。
与Windows不同,后者不区分大小写。