大家好,php上传文件到服务器相信很多的网友都不是很明白,包括经典怎样通过php将本地的文件上传到服务器上也是一样,不过没有关系,接下来就来为大家分享关于php上传文件到服务器和经典怎样通过php将本地的文件上传到服务器上的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
一、经典怎样通过php将本地的文件上传到服务器上
创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
请看下面这个供上传文件的 HTML表单:
<html>
<body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"/>
<br/>
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>
请留意如下有关此表单的信息:
<form>标签的 enctype属*规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用"multipart/form-data"。
<input>标签的 type="file"属*规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。
创建上传脚本
"upload_file.php"文件含有供上传文件的代码:
<?php
if($_FILES["file"]["error"]> 0)
{
echo"Error:".$_FILES["file"]["error"]."<br/>";
}
else
{
echo"Upload:".$_FILES["file"]["name"]."<br/>";
echo"Type:".$_FILES["file"]["type"]."<br/>";
echo"Size:".($_FILES["file"]["size"]/ 1024)." Kb<br/>";
echo"Stored in:".$_FILES["file"]["tmp_name"];
}
?>
通过使用 PHP的全局数组$_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是表单的 input name,第二个下标可以是"name","type","size","tmp_name"或"error"。就像这样:
$_FILES["file"]["name"]-被上传文件的名称
$_FILES["file"]["type"]-被上传文件的类型
$_FILES["file"]["size"]-被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"]-存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"]-由文件上传导致的错误代码
这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。
上传限制
在这个脚本中,我们增加了对文件上传的限制。用户只能上传.gif或.jpeg文件,文件大小必须小于 20 kb:
<?php
if((($_FILES["file"]["type"]=="image/gif")
||($_FILES["file"]["type"]=="image/jpeg")
||($_FILES["file"]["type"]=="image/pjpeg"))
&&($_FILES["file"]["size"]< 20000))
{
if($_FILES["file"]["error"]> 0)
{
echo"Error:".$_FILES["file"]["error"]."<br/>";
}
else
{
echo"Upload:".$_FILES["file"]["name"]."<br/>";
echo"Type:".$_FILES["file"]["type"]."<br/>";
echo"Size:".($_FILES["file"]["size"]/ 1024)." Kb<br/>";
echo"Stored in:".$_FILES["file"]["tmp_name"];
}
}
else
{
echo"Invalid file";
}
?>
注释:对于 IE,识别 jpg文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。
保存被上传的文件
上面的例子在服务器的 PHP临时文件夹创建了一个被上传文件的临时副本。
这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
<?php
if((($_FILES["file"]["type"]=="image/gif")
||($_FILES["file"]["type"]=="image/jpeg")
||($_FILES["file"]["type"]=="image/pjpeg"))
&&($_FILES["file"]["size"]< 20000))
{
if($_FILES["file"]["error"]> 0)
{
echo"Return Code:".$_FILES["file"]["error"]."<br/>";
}
else
{
echo"Upload:".$_FILES["file"]["name"]."<br/>";
echo"Type:".$_FILES["file"]["type"]."<br/>";
echo"Size:".($_FILES["file"]["size"]/ 1024)." Kb<br/>";
echo"Temp file:".$_FILES["file"]["tmp_name"]."<br/>";
if(file_exists("upload/".$_FILES["file"]["name"]))
{
echo$_FILES["file"]["name"]." already exists.";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/".$_FILES["file"]["name"]);
echo"Stored in:"."upload/".$_FILES["file"]["name"];
}
}
}
else
{
echo"Invalid file";
}
?>
上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。
二、php网站怎么传到云服务器
要将网站上传到服务器上,方法有多种。上传时可以按网站目录传也可以打包成一个zip或
rar文件一次传。
可选择的方法有:
(1)FTP方式。如果你的网站上安装有FTP服务器(比如IIS上就有FTP服务器),可以使用文件夹栏中输入ftp://你的服务器ip的方式(或使用ftp客户端软件)连接上去,然后选择php网站文件上传即可。
(2)既然使用云服务器,应该可以通过远程桌面程序登录。那么可以按如图所示操作:
第一步,打开“远程桌面连接”程序(“开始”->“所有程序”->“附件”->“远程桌面连接”);
第二步,如上图显示,“本地资源”选项卡;
第三步,在选项卡中,本地设备和资源中的“详细信息”,弹出一个对话框;
第四步,在对话框中找到“驱动器”,左边的+号,就会在下面列出如图上所示的你的电脑上的分区(图片中是我电脑上的),选择你php网站所在的那个盘打个勾;
第五步,确定关闭对话框后,开始连接。
这样和原来一样连接远程服务器后,就能在云服务器的“我的电脑”中看到你本地电脑上刚勾选的那个盘了,然后在服务器上就能像操作你电脑一样,将文件从服务器复制粘贴到你的电脑上或从你的电脑上复制粘贴到服务器上了。
三、php项目如何部署在服务器上
一、阿里ECS服务器配置
1.因为线上已经有几个站点了.所以要配置ngnix多站点
2.阿里云ecs目录结构,ngxin在/etc/nginx/目录下,配置的地方主要是nginx.config文件。或者在conf.d新建一个配置文件然后在include到nginx.config文件中
3.nginx.config新建站点信息
server{
listen 80;
server_name 你的域名.;
root站点的相对路径;
index index.php index.html index.htm;
#charset koi8-r;
#aess_log/var/log/nginx/host.aess.log main;
# Load configuration files for the default server block.
include/etc/nginx/default.d/*.conf;
location/{
#try_files$uri$uri//index.php;
root/opt//pcweb/ytyy_pc;
index index.php index.html index.htm; if(!-e$request_filename){ rewrite ^(.*)$/index.php?s=$1 last; break;}} url重写(可以没有)
# redirect server error pages to the static page/40x.html
#
error_page 404/404.html; 40错误页面配置
location=/40x.html{
}
# redirect server error pages to the static page/50x.html
#
error_page 500 502 503 504/50x.html; 50错误页面配置
location=/50x.html{
}
location~ \.php${
root站点相对路径;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
include fastcgi_params;
}
location~/\.ht{
deny all;
}
}
配置文件的基本内容如上;
配置完成后测试配置文件是否正确
这样配置就可以使用了
然后重启nginx服务器
这样nginx配置就结束了可以使用了。吧站点文件放到对应的目录下面。我git clone过去的。
二.thinkphp项目文件转移
本来以为上传完就结束了。上传上去碰到的第一个问题就是访问页面报错,页面被电信的114页面劫持了。。。麻蛋看不到报错
万能百度大法
解决方法1.inter高级选项->隐私->站点新加阻止站点
解决方法2:控制面板->网络和inter->本地连接->属*->ipv4使用如下ip
终于搞定可以看到报错页面了。。。。。。麻蛋。再次开启万能百度大法
得到最终结论是文件目录权限引起的。thinkphp的runtime目录没有写入权限。。thinkphp文件上传到阿里的好像都有这个问题。解决问题很简单
进入到项目文件目录
跟文件最高权限
chmod-R 777 [目录]//linux修改文件权限