要在PHP中实现日志操作php 文件写入,可以使用error_log()函数。 该函数采用三个参数:要记录的消息、日志文件的路径(如果留空则使用默认值)和错误类型常量。 类似于: ```error_log("Anerroroccurred", "/var/log/my-errors.log", 0);``` 这会将“Anerroroccurred”写入日志文件“/var/log/my-errors” 。日志”。 您还可以使用 error_log() 函数将消息发送到指定的电子邮件地址php 文件写入,只需将日志文件路径替换为电子邮件地址即可。类似于: ```error_log("Anerroroccurred","webmaster@example.log" com",0);````这会将“Anerroroccurred”作为电子邮件发送到“webmaster@example.com”。您还可以使用trigger_error()函数生成自定义错误消息并将其写入日志。如: ```trigger_error("Acustomerroroccurred", E_USER_WARNING);``` 这将生成 E_USER_WARNING 级别的错误消息并将其写入日志。
第 1 章:文件上传
1.1 客户端上传设置
上传中文B/S程序已成为一种常见功能。目的是客户可以通过浏览器将文件上传到服务器上的指定目录。
互联网上支持文件上传的常见网站:
各类云盘
化身
网络相册
实名认证
电子邮件附件
简而言之,Web开发要求用户将属于PHP上传范围内的文件传递到服务器。服务器端只能接受副本,除非不完成此功能。
就像10086客服一样,只要你打电话就得接受,不接受只能是服务器忙了。
PHP 中文上传基础知识:
1) 客户端表单设置
2)服务器操作和处理上传的文件
必须设置的表单项:
文件上传
选择文件:
请注意一些特征属性:
1.上传文件必须以post的形式,而不是get的形式。
2. 确保在表单中写下enctype=“multipart/form-data”。
3. 输入表单必须写下名称名称。
1.2 在服务器端通过PHP进行上传处理
上传文件的接收和处理通过 PHP 脚本处理,需要以下三个方面的信息:
1)在PH配置文件中设置命令:用于微调PHP的文件上传功能。
2)$FILES多维字段:用于存储与上传文件相关的各种信息,其他数据或使用$_POST获取。
3)PHP文件上传处理功能:用于上传文件的后续处理。
1) 与 PHP 配置文件中的文件上传相关的选项。
2) $_FILES 多维字段。
超级全球领域 $_FILES
1. $_FILES[“myfile”][“name”] 中的值为:客户端文件系统中文件的名称。
2. $FILES [“myfile”] [“type”] 中的值为:客户端传递的文件类型。
3. $_FILES[“myfile”][“size”] 中的值为:文件字节的大小。
4. $_FILES[“myfile”][“tmp_name”] 中的值为:文件上传后存储在服务器上的临时完整路径。
5、$_FILES[“myfile”][“error”] 中的值为:文件上传的错误码——php4.2 之后缩减的功能。
有关错误文件上传的错误代码:
UPLOAD_ERR_OK
其值为 0,不发生错误,文件上传成功。
UPLOAD_ERR_INI_SIZE
值为 1 时,上传的文件将超过 PHP .ini中upload_max_filesize选项限制的值。
UPLOAD_ERR_FORM_SIZE
值为 2 时,上载文件的大小将超过 HTML 表单中MAX_FILE_SIZE选项指定的值。
UPLOAD_ERR_PARTIAL
值为 3 时,仅上传文件的一部分。
UPLOAD_ERR_NO_FILE
其值为 4,并且不上传任何文件。
UPLOAD_ERR_NO_TMP_DIR
其值为 6,找不到临时文件夹。引入了 PHP 4.3.10 和 PHP 5.0.3。
UPLOAD_ERR_CANT_WRITE
值为 7 时,文件写入失败。引入了 PHP 5.1.0。
注意:上述值在 PHP 4.3.0 之后已成为 PHP 常量。
通用数据格式 (MIME)。
3) PHP 的文件上传处理程序
上传的文件会放在服务端的临时目录中,文件名是随机生成的临时文件名。
注意:程序执行后php 文件名php 文件名,此文件将被手动删除。
在删除之前,可以将其视为本地文件。
文件上传处理程序:
is_uploaded_file - 确定文件是否通过 HTTPPOST 上传。
格式:boolis_uploaded_file(字符串/文件名)。
move_uploaded_file - 将上传的文件连接到新位置。
格式:boolmove_uploaded_file(字符串/文件名,字符串/目的地)。
注意:如果目标文件已存在,它将被覆盖。
参数说明:文件的临时目录和要连接的位置目录
箱:
1) 设置后端上传接口
Document
2) 将.php处理文件上传到临时目录
//专业搬运工具
//move_uploaded_file()
//参数1:文件临时目录 参数2: 要移动到的位置
//is_uploaded_file() 判断文件是否是http post提交过来的
//参数1:文件临时目录
//1.我们保存的路径按照时间来创建
//var_dump($_GET);
//1.1保存的路径
$dir='./biran/'.date('Y/m/d/');
//echo $dir;exit;
//1.2 判断文件上传的路径是否存在 如果不存在就创建
if(!file_exists($dir)){
mkdir($dir,777,true);
}
//2.要有个好的文件名 唯一的文件名
//2.1获取文件的后缀名
//2.jpg jpg
$suffix = pathinfo($_FILES['pic']['name'],PATHINFO_EXTENSION);
//echo $suffix;
//2.2重新起名
$filename = date('Ymd').uniqid().mt_rand(0,9999).'.'.$suffix;
//echo $filename;
//开始搬运
//判断是否是http post 传递的文件
if(!is_uploaded_file($_FILES['pic']['tmp_name'])){
//不是http post上传文件
echo '别整没用的!!';exit;
}
//开始真正的搬运
if(move_uploaded_file($_FILES['pic']['tmp_name'],$dir.$filename)){
echo '11111111111';
}else{
echo '22222222222';
}
封装为函数:
想法:
function upload(){
//1.判断文件上传错误
//2.判断你文件上传的类型是否是你想要的类型
//3.起名字
//4.判断保存路径是否存在
//5.判断是否是http post方式上传
//6.移动图片
//7.返回移动成功的图片名
}
开始封装函数:创建新函数.php
<?php
/*
文件上传函数
@param string $name 文件上传文件域的name值
@param string $dir 文件保存路径
@param array $allow 文件允许上传的类型
return string $filename 文件名 如果失败 返回false
*/
function upload($name,$dir='./upload/',$allow=array('jpg','gif','jpeg','png')){
//echo $name;exit;
//var_dump($_FILES);exit;
//1.判断文件上传错误
if($_FILES[$name]['error']>0){
//echo '上传错误';
switch($_FILES[$name]['error']){
case 1:
echo '上传的文件超过了 php.ini 中upload_max_filesize 选项限制的值.';
break;
case 2:
echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
break;
case 3:
echo '文件只有部分被上传.';
break;
case 4:
echo '没有文件被上传.';
break;
case 6:
echo '找不到临时文件夹.';
break;
case 7:
echo '文件写入失败.';
break;
}
return false;
}
//2.判断你文件上传的类型是否是你想要的类型
//2.1允许上传的类型
//2.2 获取后缀名
$suffix = pathinfo($_FILES[$name]['name'],PATHINFO_EXTENSION);
//echo $suffix;exit;
//2.3 判断是否是我们允许上传的类型
//var_dump(in_array($suffix,$allow));exit;
if(!in_array($suffix,$allow)){
//不允许上传的类型
echo '大哥你的上传类型不符合';
return false;
}
//3.起名字
$filename = date('Ymd').uniqid().mt_rand(0,9999).'.'.$suffix;
//echo $filename;exit;
//4.判断保存路径是否存在
//4.1 得到保存路径
//4.2 处理保存路径和后面的斜杠
$save_path = rtrim($dir,'/');
$save_path .='/';
//4.3 保存路径中的时间文件夹处理
$save_path .=date('Y/m/d/');
//4.4 判断保存的路径是否存在
if(!file_exists($save_path)){
mkdir($save_path,777,true);
}
//4.5 拼接一个完整的保存路径
$path = $save_path.$filename;
//echo $path;exit;
//5.判断是否是httppost方式上传
if(!is_uploaded_file($_FILES[$name]['tmp_name'])){
echo '滚蛋!';
return false;
}
//6.移动图片
if(!move_uploaded_file($_FILES[$name]['tmp_name'],$path)){
echo '移动失败';
return false;
}
//7.返回移动成功的图片名
return $filename;
}
调用函数开始上传:
<?php
include './function.php';
//var_dump($_FILES);exit;
echo upload('file','./leiding',array('jpg','png'));
第 2 章:多文件上传
2.1 上传多个不同名称的文件
当需要上传多个文件时,有两种方法可以实现它:
1)使用不同的表单元素。
2) 使用链表格式的表单元素。
第3章 文件下载
1)对于浏览器无法识别的文件,您可以借助连接直接下载它们。
<a href="./downlist/1.rar">1.rar</a>
<a href="./downlist/1.exe">1.exe</a>
<a href="./downlist/1.avi">1.avi</a>
2)对于浏览器无法识别,可以使用readfile功能。
<a href="./action.php?name=1.html">1.html</a>
<a href="./action.php?name=1.php">1.php</a>
<a href="./action.php?name=1.txt">1.txt</a>
<a href="./action.php?name=1.jpg">1.jpg</a>
//接收一下name值.
$name = $_GET['name'];
//实现下载功能
//强制浏览器弹出另存为对话框
header('content-Disposition:attachment;filename="'.$name.'"');
//此时只是下载了一个空文件,需要利用readfile读一遍所有的内容.便可下载.
$path = './downlist/'.$name;
readfile($path);