php服务器学习,PHP学习:PHP与服务器文件系统的简单交互

《PHP学习:PHP与服务器文件系统的简单交互》要点:

本文介绍了PHP学习:PHP与服务器文件系统的简单交互,希望对您有用。如果有疑问,可以联系我们。

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

PHP教程

a8f7f7a0f76515668272bf51d1f4aa53.png

PHP教程2、文件上传过程

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

PHP教程

Adminstration - upoload new files

Upload new files

Upload a file

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

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

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

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

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

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

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

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

PHP教程错误类型说明:

PHP教程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教程③php代码

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 "";

PHP教程3、使用目录函数

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

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

PHP教程

$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教程②使用php的dir类

PHP教程

$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(); //关闭目录

?>

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

PHP教程

$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 "

";

?>

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

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

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

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

PHP教程(4)创建和删除目录

PHP教程①mkdir():创建目录;

PHP教程代码:

PHP教程

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

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

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

PHP教程②rmdir():删除目录;

PHP教程代码:

PHP教程

rmdir("/temp/testing");

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

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

PHP教程4、与文件系统的交互

PHP教程(1)获取文件信息:

PHP教程

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')."
";

?>

PHP教程(2)更改文件属性

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

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

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

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

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

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

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

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

PHP教程(4)使用程序执行函数

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

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

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

PHP教程结果直接输出到浏览器;

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

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

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

PHP教程system(escapeshellcmd($command));

PHP教程5、与环境变量交互

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

PHP教程getenv("$key_name"):

PHP教程setenv("$key_name=$value");

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值