php访问服务器文件路径,PHP与服务器文件系统的简单交互

1、php.ini中关于文件上传的设置指令

033f0ec77a8863196ba8c6303b08c065.png

2、文件上传过程

(1)上传文件提交表单html代码:

Adminstration - upoload new files

Upload new files

Upload a file

(2)php处理上传文件代码

①在php脚本中,需要处理的数据保存在超级变量数组$_FILES中,开启register_globals指令可以直接通过变量名访问这些信息;

②假如表单变量名为“username“则有:

$_FILES['userfile']['tmp_name']:储存文件在Web服务器中的临时保存位置;

$_FILES['userfile']['name']:储存用户系统中文件的名称;

$_FILES['userfile']['size']:储存文件的大小;

$_FILES['userfile']['type']:储存文件的类型;

$_FILES['userfile']['error]:储存任何与文件上传相关的错误代码;

错误类型说明:

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代码

//检验文件传输异常

if($_FILES['userfile']['error']>0){

echo 'Problem';

switch($_FILES['userfile']['error']){

case 1: echo 'File exceeded upload_max_filesize';break;

case 2: echo 'File exceeded max_file_size';break;

case 3: echo 'File only partially upload';break;

case 4: echo 'No file uploaded';break;

case 6: echo 'Cannot upload file: No temp directory specified';break;

case 7: echo 'Upload failed:Cannot write to disk';break;

}

exit;

}

//检验传输的文件是否为文本文件

if($_FILES['userfile']['type'] != 'text/plain'){

echo 'Problem: file is not plain text';

exit;

}

//将上传文件包含在服务器中/uploads/的目录下(该目录必须独立于Web文档树)

$upfile = '/uploads/'.$_FILES['userfile']['name']; //在指定目录下以传输文件的文件名创建一个新文件

if(is_uploaded_file($_FILES['userfile']['tmp_name'])){

if(! move_uploaded_file($_FILES['userfile']['tmp_name'],$upfile)){ //将传输文件的临时文件移动到创建的新文件

echo 'Problem: Could not move file to destination directory';

exit;

}

}

else{

echo 'Problem: Possible file upload attack.Filename:';

echo $_FILES['username']['name'];

exit;

}

echo "File uploaded seuucessfully
";

//对传输文件清除html和php标记

$contents = file_get_contents($upfile); //将文件内容提取为一个字符串;

$contents = strip_tags($contents); //对该字符串擦除html和tags标记;

file_put_contents($_FILES['userfile']['name'],$contents); //将该字符串重新写入文件中;

//在浏览器上显示传输的文本文件内容

echo "

Preview of uploaded file contents:


>";

echo nl2br($contents);

echo "";

3、使用目录函数

(1)从目录中读取文件名

①使用opendir(),readdir(),closedir()函数;

$current_dir = '/uploads/'; //创建目录url对象

$dir = opendir($current_dir); //打开目录,结果返回一个目录对象

echo "

Upload directory is $current_dir

";

echo "

Directory Listing:

  • ";

while(($file = readdir($dir)) !== false){ //读取目录对象

if($file != "." && $file != ".."){ //过滤当前目录和上一级目录

echo "

$file";

echo "".$file."
";

}

}

echo "

";

closedir($dir); //关闭目录;

?>

②使用php的dir类

$current_dir = '/uploads/'; //创建目录url对象

$dir = dir($current_dir); //创建dir对象

echo "

Handle is $dir->handle

";

echo "

Upload directory is $current_dir

";

echo "

Directory Listing:

  • ";

while(($file = $dir->read()) !== false){ //通过dir对象读取目录下的文件名

if($file != "." && $file != ".."){

echo "

$file";

}

}

echo "

";

$dir->close(); //关闭目录

?>

(2)使用scandir()函数对文本名称进行字母表的排序方式

$current_dir = '/uploads/'; //创建目录url对象

$files1 = scandir($current_dir); //将指定目录下的文件名保存为一个数组,默认以字母升序排序

$files2 = scandir($current_dir,1); //将指定目录下的文件名保存为一个数组,以字母降序排序

echo "

Upload directory is $current_dir

";

echo "

Directory Listing in alphabetical order,ascending:

  • ";

foreach($files1 as $file1) {

if($file1 != "." && $file1 != "..")

echo "

$file1";

}

echo "

";

?>

(3)获取当前目录的其他信息

dirname($path):返回路径的目录部分;

basename($path):返回路径的名称部分;

disk_free_space($path):返回路径所在磁盘可以保存上传文件的容量;

(4)创建和删除目录

①mkdir():创建目录;

代码:

$oldumask = umask(0); //重置当前权限码

mkdir("/tmp/testing",0777); //创建目录

umask($oldumask); //恢复当前权限码

②rmdir():删除目录;

代码:

rmdir("/temp/testing");

或rmdir("c:\\tmp\\testing');

※要删除的目录必须是空目录;

4、与文件系统的交互

(1)获取文件信息:

while(($file = readdir($dir)) !== false){

echo "".$file."
";

}

$current_dir = '/uploads/';

$file = basename($file); //获取文件文件名

echo "

Details of file

";

echo "

File data

";

echo 'File last accessed: '.date('j F Y H:i',fileatime($file))."
"; //返回最近访问的时间戳

echo 'File last modifixed: '.date('j F Y H:i',filemtime($file))."
"; //返回最近修改的时间戳

$user = posix_getpwuid(fileowner($file)); //返回用户标识uid

echo 'File owner: '.$user['name']."
";

$group = posix_getgrgid(filegroup($file)); //返回组织标识gid

echo 'File group: '.$group['name']."
";

echo 'File permissions: '.decoct(fileperms($file))."
"; //返回8位的权限码

echo 'File type'.filetype($file)."
"; //返回文件类型

echo 'File size'.filesize($file)."
"; //返回文件字节数

echo "

File Tests

";

echo 'is_dir?'.(is_dir($file) ? 'true':'false')."
";

echo 'is_executable?'.(is_executable($file) ? 'true':'false')."
"; //判断文件是否可执行;

echo 'is_file?'.(is_file($file) ? 'true':'false')."
";

echo 'is_link?'.(is_link($file) ? 'true':'false')."
";

echo 'is_readable?'.(is_readable($file) ? 'true':'false')."
";

echo 'is_writable?'.(is_writable($file) ? 'true':'false')."
";

?>

(2)更改文件属性

chgrp(file,group):修改文件的分组;

chmod(file,permissions):修改文件的权限;

chown(file,user):修改文件的所有者;

(3)创建、删除和移动文件

bool touch($filename,[int time,[ int atime]]):创建一个文件(time指定创建时间戳,atime指定可选时间戳)

unlink($filename):删除一个文件

copy($source_path,$destination_path):复制一个文件

rename($oldfile,$newfile):重命名一个文件;

(4)使用程序执行函数

①String exec(String command[ ,array result [ ,int result_value]])

返回命名结果的最后一行,result变量可以返回字符组数,这些字符串代表输出的每一行,result_value获取返回代码;

②void passthru(String command[ ,int result_value])

结果直接输出到浏览器;

③String system(string command[ ,int return_value])

输出结果到浏览器,返回命令结果的最后一行或false;

※在用户提交的数据包括执行命令的一部分,应该进行以下包装:

system(escapeshellcmd($command));

5、与环境变量交互

phpinfo()函数:获取php的所有变量列表;

getenv("$key_name"):

setenv("$key_name=$value");

以上所述是小编给大家介绍的PHP与服务器文件系统的简单交互,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

泽西岛客户:测试外部呼叫

吉姆和我在上周一直在做一些工作,其中涉及调用neo4j的HA状态URI来检查实例是否是主/从属,并且我们一直在使用jersey-client 。 该代码大致如下所示: class Neo4jInstance {private Client httpClient;private URI hostname;public Neo4jInst…

django F和Q 关键字使用

F 的使用: 想给表里每个价格加上一百就要用上F,直接加是不行的。 转载于:https://www.cnblogs.com/wuheng-123/p/9561422.html

php酷狗音乐json,用php来搜索酷狗音乐

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼返回结果要使用$datajson_decode($json,true);转换为php array变量搜索歌曲:http://mobilecdn.kugou.com/api/v3/search/song?formatjson&keyword想象之中&page1&pagesize30返回实例:Array([st…

了解OutOfMemoryError

每当您发现自己盯着一个带有OutOfMemoryError的堆栈跟踪时,它应该都非常清晰。 该程序不再有肘部空间,并且由于缺少它而濒临死亡。 从10,000英尺或高管椅子上可能已经包含太多信息。 但是,那些必须构建或维护应用程序并弄清为什么会产生特定错…

jQuery之合成事件

jQuery提供一些方法将两种效果合并到一起,比如:mouseover、mouseout。 下面是一些案例: hover(over,out)一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法。这是一个自定义的方法,它为频繁使…

基础命令_1

避免误删除数据1.尽量把文件移动到 /tmp目录2.参数最小化 -f -rf3.-f或-fr放在命令最后#########################################################################################################################find 命令 <find(选项)(参数)> find命令用来在…

php pdo使用事务,PHP内PDO事务使用步骤详解

这次给大家带来PHP内PDO事务使用步骤详解&#xff0c;PHP内PDO事务使用的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。概要&#xff1a;将多条sql操作(增删改)作为一个操作单元&#xff0c;要么都成功&#xff0c;要么都失败。单条数据不用事务处理被…

[转帖]真TM长的:SQL Server 2008存储结构——GAM和SGAM、PFS结构、IAM结构、DCMBCM

谈到GAM和SGAM&#xff0c;我们不得不从数据库的页和区说起。 https://blog.csdn.net/snowfoxmonitor/article/details/49991015 一个数据库由用户定义的空间构成&#xff0c;这些空间用来永久存储用户对象&#xff0c;例如数据库管理信息、表和索引。这些空间被分配在一个或多…

六大Java功能

我花了无数小时来对不同的应用程序进行故障排除。 通过经验&#xff0c;我可以得出关于大多数开发人员应该远离的几个Java SE功能/ API的结论。 当我提到大多数开发人员时&#xff0c;我会想到常规的Java EE开发人员&#xff0c;而不是库设计人员/基础结构工程师。 全面披露&a…

解决socket 粘包的三种方法

在socket编程中&#xff0c;当服务器连续向客户机发送两条指令时&#xff0c;就容易发生粘包 解决方法 1.sleep&#xff08;&#xff09;通过睡眠来隔断两条语句 2、设置一条回执语句&#xff0c;当对方接受完信息后返回一个值 3根本解决&#xff1a; 通过在客户端程序中来确定…

用Jquery实现选项卡功能

jQuery实现选项卡功能。首先将界面搭建好。有导航头tab_menu&#xff0c;还有内容tab_box。要实现的效果就是&#xff0c;点击后&#xff0c;将相应的内容显示出来&#xff0c;其他内容隐藏掉。同时为了展现选中状态&#xff0c;为选中的项添加背景&#xff0c;以示区别。 这一…

帝国模板php代码,让帝国cms搜索页模板支持php代码

1.在/e/search/result/index.php头上加入require(../../class/functions.php);2.在/e/search/result/index.php 120行左右//替换公共模板变量$listtemp$tempr[temptext];这行代码之前加上$tempr[temptext]DtNewsBq(list.$tempr[tempid],$tempr[temptext],0);完整代码如下&#…

【刷题】BZOJ 4176 Lucas的数论

Description 去年的Lucas非常喜欢数论题&#xff0c;但是一年以后的Lucas却不那么喜欢了。 在整理以前的试题时&#xff0c;发现了这样一道题目“求Sigma(f(i)),其中1<i<N”&#xff0c;其中 表示i的约数个数。他现在长大了&#xff0c;题目也变难了。 求如下表达式的值&…

寻找缺少的堆栈跟踪

我们最近在博客中发表的一篇评论带回了有关特定体验的一些回忆。 我希望我没有经历过的那种经历。 在我们创建Plumbr之前很长时间&#xff0c;我正在调试一个应用程序&#xff0c;该应用程序每次在蓝月亮时都会给我一个例外。 详细程度令人震惊&#xff1a; java.lang.NullPoi…

HTML5--新增拖放事件(7)

前言&#xff1a; 这节课主要学习HTML5中新增的拖放事件(drag/drop)。 拖放事件 1.启用&#xff1a;HTML5中&#xff0c;如果想拖拽元素&#xff0c;给元素添加draggable true的属性&#xff0c;图像和a标签默认是可以进行拖拽的。 2.拖拽事件&#xff1a; 1.应用于被拖拽元素…

Django 用 uploadify 实现图片批量上传

分享一下在Django中使用uploadify——一个jQuery批量上传插件——的方法。github上的django-uploadify使用的是2.1.4版本&#xff0c;上传button只能使用图片&#xff0c;不能很方便的修改样式。本文针对的是uploadify 3.0.0版本。uploadify可以结合Django自身的ImageField&…

php判断记录,PHP判断数据库中的记录是否存在的方法,php数据库_PHP教程

PHP判断数据库中的记录是否存在的方法&#xff0c;php数据库本文实例讲述了PHP判断数据库中的记录是否存在的方法。分享给大家供大家参考。具体实现代码如下&#xff1a;复制代码 代码如下:$sql"select * from checklist where game_id$gid and task$task and status$stat…

Java DB中的Java存储过程

1 Java存储过程 这篇文章是关于Java DB中的Java存储过程的。 Java DB是基于Java编程语言和SQL的关系数据库管理系统。 这是Apache软件基金会的开源Derby项目的Oracle版本。 Java SE 7 SDK中包含Java DB。 在数据库内调用的Java代码是一个存储过程&#xff08;或多个过程&…

一些职场感想

教训 不要相信领导给你画的大饼 离开了&#xff0c;就不要回去 他说的为你好&#xff0c;都是套路而已 你会比你想象的更优秀 不要认为提增加工资不好意思&#xff0c;你不提&#xff0c;他永远不会给你加工资 怎么才算努力 这就看你所处的队友是怎么样的&#xff1b;如果队友是…

php聊天室发送表情,聊天室技术(六)-- 表情和动作_PHP

表情和动作极大的丰富了聊天的乐趣,一般的聊天室主要通过2种方法发送(1) 按钮菜单的方法通过在一个固定的下拉菜单里面进行选择,找到自己满意的表情,然后选中,按发送按钮发出(2) 通过手工输入代号比如网易的以手工输入 //hello 代表欢迎的一段动作,以 //bye 代表再见的一段动作…