찾다
php教程php手册PHP 파일 시스템_php 기본에 대한 자세한 설명

파일 처리 기능
1. 파일 작업
파일 열기:
지정한 파일이 열릴 경우 해당 객체가 반환될 수 있습니다. 문서가 자동으로 생성됩니다.
Resource fopen(string filename, string mode [,int use_include_path][,resource context])
파일 이름은 파일 경로를 포함하는 파일 이름이거나 특정 프로토콜에서 제공하는 URL일 수 있습니다. 원격 파일 열기) 시스템 전환으로 인한 문제를 피하기 위해 '/'를 경로 구분자로 사용합니다.
모드: 파일을 여는 방법을 각각 설정합니다.
r: 읽기 전용입니다. 모드에서는 파일 포인터가 파일의 헤드에 위치합니다.
r+: 읽기 전용 모드 - 읽기/쓰기 모드에서는 파일 포인터가 파일의 헤드에 위치합니다.
w: 쓰기 전용 모드, 파일 포인터는 파일의 선두에 위치합니다. 파일이 있으면 삭제하고, 그렇지 않으면 직접 파일을 만듭니다.
    w+: 쓰기 전용 모드--- -파일을 읽고 쓰기, 읽기/쓰기 파일 포인터는 파일의 헤드를 가리킵니다. 파일이 있으면 내용을 삭제하고 다시 씁니다. 그렇지 않으면 직접 파일을 만듭니다.
쓰기 모드에서 파일을 엽니다. 존재하면 false를 반환하고 E_WARNING 수준 오류 메시지를 생성합니다.
a: 추가, 파일 포인터가 파일의 끝을 가리킵니다. 파일이 있으면 파일의 끝 부분에 직접 추가하고, 그렇지 않으면 직접 파일을 만듭니다. .
a+: 파일 포인터가 파일의 끝을 가리킵니다. 파일이 있으면 파일 끝에서 직접 추가하거나 읽습니다.
b: 바이너리 모드입니다. 다른 모드와 연결하는데 사용됩니다.(윈도우에서는 옵션)
t: 다른 모드와 결합하는데 사용됩니다.(윈도우에서는 옵션)
실수로 파일이 삭제될 수 있으므로 주의해서 사용하세요. 동시에, 운영 체제마다 줄 끝 습관이 다릅니다(UNIX:n Windows:rn Macinitosh:r). 줄 종결자를 잘못 사용하면 파일을 열 때 잘못된 문자가 잔뜩 출력될 수 있습니다. 피하기 위해 "'t'", "'b'"를 전달할 수 있습니다.

파일 읽기:
String fgetc(resource handler);//다음이 가리키는 파일에서 문자를 반환합니다. EOF가 발견되면 false를 반환합니다.
String fgets(int handler[,int length]);//파일 포인터가 가리키는 위치에서 문자 줄을 가져오고 최대 문자열을 반환합니다. 길이-1바이트. 파일 포인터는 유효해야 하며 fopen() 또는 fsockopen()에 의해 성공적으로 열린 파일을 가리킵니다. 길이는 읽은 데이터의 길이를 나타냅니다. . 길이를 무시하면 줄 끝까지 읽혀집니다.
 string fgetss(resource handler[,int length][,string allowed_tags]);//줄을 읽고 html 및 php 태그를 필터링합니다.
 string fread. (int 핸들, int 길이);//모든 길이의 파일 데이터를 읽습니다. , 바이너리 파일을 읽는 데에도 사용할 수 있습니다. 핸들은 파일을 가리키는 리소스이고, 길이는 길이 바이트를 읽거나 EOF가 발견되면 실행을 중지합니다.
예:

코드 복사 코드는 다음과 같습니다.
$filename="./files.text";
$fp=fopen($finename,"rb")
$encho fread($fp,100)?> 🎜>

readfile(), file() 및 file_get_contents() 함수
readfile(), file() 및 file_get_contents() 함수
 int readfile(string filename[,bool use_include_path,resource context]); //파일을 읽고 버퍼에 씁니다. 성공하면 읽은 바이트 수를 반환하고, 그렇지 않으면 false를 반환합니다. 파일명 파일명. use_include_path 매개변수는 include_path에서 파일 검색을 지원할지 여부를 제어하며, true는 지원된다는 의미입니다. readfile 함수를 사용하여 파일을 열거나 닫을 필요가 없습니다.
 array file(string filename [,bool use_include_path[,resource context]]);//전체 파일의 내용을 배열로 읽어옵니다. 성공하면 배열의 각 요소가 파일의 해당 줄이며, 그렇지 않으면 false가 반환됩니다.
string file_get_contents(string filename[,bool use_include_path[,int offset; [,int maxlen]]]]);//context는 5.0의 새로운 내용이며 NULL로 무시할 수 있습니다. 오프셋, maxlen은 5.1의 내용입니다. offset은 파일의 시작 위치를 표시하는 데 사용되며 maxlen은 읽은 파일의 길이를 설정합니다. 이 방법은 바이너리 파일을 읽는 데 적합합니다. 파일 내용을 문자열로 읽는 데 선호되는 방법입니다. 운영 체제에서 지원하는 경우 성능 향상을 위해 메모리 매핑 기술도 사용됩니다. 특수 문자(예: 공백)가 포함된 URL을 여는 경우 urlencode()를 사용하여 URL을 인코딩하세요.

참고: readfile(), file() 및 file_get_contents()는 폴더 전체의 내용을 읽을 때 fopen() 및 fclose() 함수를 사용할 필요가 없지만, 한 문자, 한 줄을 읽을 때는 문자 및 모든 길이의 문자.

2. 파일에 쓰기:
 int fwrite(resource handler,string[,int length]);//파일 쓰기 작업을 수행합니다. fputs() 별칭도 있습니다. . 이 메서드는 문자열의 내용을 파일 포인터 핸들에 쓰는 데 사용됩니다. length가 설정된 경우 length 바이트가 기록되거나 문자열이 기록된 후 작업이 중지됩니다. 쓰기가 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
참고: 길이 매개변수가 제공되면 php.ini 파일의 Magic_quotes_runtime 옵션이 무시되고 문자열의 슬래시가 제거되지 않습니다. 바이너리 파일과 텍스트 파일 시스템을 구별하려면 파일을 열 때 fopen() 함수의 모드 매개변수에 'b'를 추가해야 합니다.
  int file_put_contents(string filename,string data[.int flags[,resource context]]);//파일에 문자열을 쓰고, 성공하면 바이트 수를 반환하고, 그렇지 않으면 false를 반환합니다. 플래그: 파일 잠금을 구현합니다(옵션에는 file_use_include_path, file_append: 추가, lock_ex: 배타적 잠금 포함). 컨텍스트 리소스를 컨텍스트화합니다.
참고: fwrite()에는 파일 쓰기 기능이 있지만 fopen() 및 fclose() 함수에서 지원해야 합니다. file_put_contents()는 fopen(), fwrite(), fclose()의 기능을 통합하고 독립적으로 파일 쓰기를 완료할 수 있습니다.
3. 파일 닫기
파일이 열리면 파일 작업이 완료된 후 파일을 닫아야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다. .
bool fclose(resouce handler);//매개변수 핸들이 가리키는 파일을 닫고, 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

파일 잠금
텍스트 파일에 데이터를 쓸 때는 먼저 파일을 잠가야 다른 사용자가 동시에 파일 내용을 수정할 수 없습니다. 파일 잠금은 Flock() 함수를 통해 PHP에서 구현됩니다.
 bool Flock(int handler,int Operation);//매개변수 연산으로 잠금 권한을 제어합니다. 포함: lock_sh: 공유 잠금을 얻습니다(리더). lock_ex: 배타적 잠금(쓰기)을 얻습니다. lock_un: 잠금을 해제합니다. lock_nb: 잠금 시 Flock() 함수가 차단되는 것을 방지합니다.

디렉터리 처리 기능
  디렉토리는 특별한 종류의 파일입니다. 파일이기 때문에 조작하려면 먼저 열어야 하고, 그 다음 찾아볼 수 있고, 마지막으로 닫아야 한다는 것을 기억하세요.

1. 디렉터리 열기

지정된 디렉터리 파일을 엽니다. 성공하면 디렉터리 핸들을 반환합니다. 그렇지 않으면 false를 반환합니다. 파일을 여는 것과 달리 디렉토리가 존재하지 않으면 자동으로 디렉토리를 생성하지 않고 오류 메시지를 표시합니다. opendir() 함수 앞에 "@" 기호를 추가하면 오류 메시지 출력을 차단할 수 있습니다.
Resource opendir(string path[,resource context]);//path는 열려는 디렉터리 파일을 지정합니다. 지정된 경로가 유효한 디렉터리가 아니거나 권한 문제로 인해 파일 시스템 오류를 열 수 없는 경우 이 함수는 false를 반환하고 E_WARNING 수준 오류 메시지를 생성합니다.

2. 디렉터리 찾아보기


opendir 함수와 scandir 함수에서 반환된 핸들을 사용하여 찾아보기 작업을 구현합니다.
 array scandir(string Directory[,int sorting_ordering[,resource context]]);//지정된 경로 아래의 디렉터리와 파일을 찾는 데 사용됩니다. 성공하면 파일 이름이 포함된 배열을 반환하고, 그렇지 않으면 false를 반환합니다. 디렉터리는 탐색할 디렉터리를 지정합니다. 디렉터리가 아닌 경우 false가 반환되고 E_WARNING 수준 오류 메시지가 생성됩니다. sorting_order는 정렬 순서를 설정하며 기본값은 알파벳 오름차순입니다. 이 매개변수를 제공하면 내림차순으로 정렬됩니다.
비고: is_dir() 함수는 지정된 파일 이름이 디렉터리인지 여부를 확인합니다.如果文件名存在且为目录,则返回true,否则返回false。如果是相对目录,则按照当前工作目录检查其相对路径。

3.关闭目录。

  void closedir(resource handle);//handle,要关闭的工作目录的句柄。

备注:前面已经了解到,若打开的目录不存在,系统并不会帮我们创建目录。那么我们可以自行创建想要的目录。可以应用以下函数:
    mkdir()函数:新建一个目录,成功则返回true,否则false。
    rmdir()函数:删除目录。目录必须为空(目录中无文件或者子目录),且要有操作的权限。
    unlink()函数:删除文件,成功则返回true,失败返回false。

文件上传、下载原理 
       
步骤内容:
  步骤1:控制上传文件,通过php.ini文件配置。
  步骤2:对上传文件进行判断。上传文件的大小,格式等。
  步骤3:执行上传文件的操作方法。

1.控制上传文件:

  php通过对php.ini对上传文件进行控制,包括:是否支持上传、上传文件的临时目录、上传文件的大小、指令执行的时间与指令分配的内存空间。
    在php.ini文件中定位到file uploads选项,完成对上述选项的设置。选项含义如下:
    file_uploads:如果是on,说明服务器支持文件上传,如果为off,则不支持。一般默认是支持的,此选项不必修改。
    upload_tem_dir:上传文件的临时目录。在文件上传成功之前,文件首先保存在服务器的临时目录中。多数使用系统默认目录,但是也可以自行设置。
    upload_max_filesize:服务器允许上传文件的最大值,以MB为单位。系统默认为2MB,若超过则须修改其值。
    max_execution_time:php中一个指令所能执行的最长时间,单位是秒。该指令在执行上传超大文件时必须修改,否则及时上传文件在服务器允许的范围内,但是超过指令所能执行的最长时间,仍然无法实现上传。
    memory_limit:php中一个指令所分配的内存空间,单位时MB。它的大小同样会影响到超大文件的上传。

备注:在客户端中控制上传文件应用的时form表单中的enctype和method属性,以及隐藏域MAX_FILE_SIZE.
    enctype="multipart/form-data":指定表单编码数据方式。
    method="post":指定数据传输的方式。
    :通过隐藏域控制上传文件的大小,单位为字节。该值不能超过php.ini配置文件中的upload_max_filesize选项设置的值。它不能完全控制上传文件的大小,只能避免一些不必要的麻烦。

2.判断上传文件

  对上传文件进行判断应用的是全局变量$_FILES,$_FILES是一个数组,它包含所有上传文件的信息。数组中各个元素含义如下:
    $_FILES[filename][name]:存储上传文件的文件名,如text.txt,title.jpg等。
    $_FILES[filename][size]:存储文件的大小,单位为字节。
    $_FILES[filename][tem_name]:存储文件在临时目录中使用的文件名,因为文件在上传时首先要将其以临时文件的身份存储在临时目录中。
    $_FILES[filename][type]:存储上传文件的MIME类型。 MIME规定各种文件格式的类型,每种MIME类型都时由“/”分隔的主类型和子类型组成。例如:"image/gif"的主类型为图像,子类型为GIF格式的文件。 "text/html"代表文本的HTML文件。
    $_FILES[filename][error]:存储文件上传的错误代码:此项目为PHP4.2.0版本中新增内容。它的返回值由5种:
      0:表示没有任何错误。文件上传成功。
      1:表示上传文件的大小超出配置文件指令upload_max_filesize选项的限定值。
      2:表示上传文件的大小超出HTML表单中max_file_size选项所指定的值。
      3:表示文件只被上传了一部分。
      4:表示没有上传任何文件。
例子:
复制代码 代码如下:

/*判断是否由上传图片*/
if(!empty($_FILES['up_picture'][name])){
/*将图片信息赋值给变量*/
$type=strtolower(strstr($_FILES['up_picture'][name],"."));
if($type != '.jpg' && $type != '.gif') echo "你上传的文件格式不对";
else{
if($_FILES['up_picture'][size]0){
echo "上传文件名称:".$_FILES['up_picture'][name]."
";
echo "上传文件类型:".$type."
";
echo "上传文件大小:".$_FILES['up_picture'][size]."
";
}else echo "图片大小不符合要求。";
}
}
?>


3.文件上传。

  php中应用move_uploaded_file()函数实现文件上传。但在执行之前,为了防止潜在的攻击对原本不能通过脚本交互的文件进行非法管理,可以先应用is_uploaded_file()函数判断指定的文件是否通过HTTP POST上传的,如果是则返回true。通过该函数,可以确保恶意的用户无法欺骗脚本去访问不能访问的文件。
   bool is_uploaded_file(string name);//用于判断指定的文件是否通过HTTP POST上传的。filename必须类似于$_FILES[‘filename'][‘temp_name']的变量,不可以使用从客户端上传的文件名$_FILES[‘filename'][‘name']。

   move_upload_file(string filename,string destination);//该函数用于将文件上传到服务器中指定的位置。如果成功,则返回true,否则返回false。filename指定上传文件的临时文件名,即$_FILES['tmp_name'],参数destination指定文件上传后保存的新路径和名称。如果参数不是合法的上传文件,不会出现任何操作,该函数将返回false。如果是合法的上传操作,但是由于某些原因无法移动,则不会出现任何操作,返回false的同时将会发出一条警告。
复制代码 代码如下:

if( !empty($_FILES[ 'up_picture' ][ 'name' ])){
if( $_FILES['up_picture']['error'] > 0){
echo "上传错误!";
switch($_FILES['up_picture']['error']){
case 1:
echo "上传文件超出配置文件规定值";
break;
case 2:
echo "上传文件超出表单规定值";
break;
case 3:
echo "上传文件不全";
break;
case 4:
echo "没有上传文件";
break;
}
}else{
if( ! is_dir('./upfile/') ) mkdir('./upfile/');
$path='./upfile/'.time().$_FILES['up_picture' ][ 'name' ];
if( is_uploaded_filed( $_FILES['up_picture' ][ 'tmp_name' ] )){
if(!move_uploaded_file( $_FILES['up_picture' ][ 'tmp_name' ] ,$path )){
echo "上传失败!";
}else{
echo "文件".time().$_FILES['up_picture' ][ 'name' ] ."上传成功,大小为:".$_FILES['up_picture' ][ 'size' ] ;
}
}else{
echo "上传文件".$_FILES['up_picture' ][ 'name' ]."不合法";
}
}
}
?>


4.文件下载

这裡介绍通过http方式下载文件,主要用到header()函数。header()函数属于HTTP函数,其作用是以HTTP将HTML文档的表头送到浏览器,并告诉浏览器具体怎麽处理这个页面。
void header(string string[,bool replace[,int http_respone_code]]);//参数string 指定发送的标头。参数replace控制如果一次发送多个标头,对于相似的标头是替换还是添加。如果是false,则强制发送多个同类型的标头,默认为true。参数http_respone_code强制将HTTP响应代码设置为指定值:
下载步骤如下:
    a):通过"Content-Type" 指定文件的MIME类型。
    b):通过"Content-Disposition" 对文件进行描述,值"attachment;filename="test.jpg"" 说明是一个福建,同时指定下载文件的名称。
    c):通过"Content-Length" 设置下载文件的大小。
d):通过readfile()函数读取文件内容。
例如:
复制代码 代码如下:

header('Content-Type:image/jpg');
header(' Content-Disposition:attachment;filename="test.jpg" ');
header('Content-Length:'.filesize('test.jpg') );
readfile('test.jpg');


5.访问远程文件

  步骤1:配置 php.ini 文件选项 allow_url_fopen设置为on。参数默认是开启的,允许打开http和ftp指定的远程文件。如果 allow_url_fopen设置为off,则不允许打开远程文件。
  步骤2:使用fopen()函数读取文件内容。根据内容创建你想要的资源,保存到本地。
        
ps:更多php.ini配置文件中的文件操作 和 目录操作的扩展方法请参考官方php指南。
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
如何应对Linux系统中的文件系统崩溃问题如何应对Linux系统中的文件系统崩溃问题Jun 29, 2023 pm 04:05 PM

如何应对Linux系统中的文件系统崩溃问题引言:随着计算机技术的不断发展,操作系统的稳定性和可靠性也变得越来越重要。然而,尽管Linux系统被广泛认为是一个稳定和可靠的操作系统,但仍然存在文件系统崩溃的可能性。文件系统崩溃可能会导致数据丢失和系统异常等严重后果。因此,本文将介绍如何应对Linux系统中的文件系统崩溃问题,以帮助用户更好地保护自己的数据和系统。

fstab(File System Table)fstab(File System Table)Feb 19, 2024 pm 06:30 PM

fstab(FileSystemTable)是Linux系统中的一个配置文件,用于定义系统启动时挂载文件系统的规则。fstab文件位于/etc目录下,可通过手动创建或编辑器修改。每行规定一个要挂载的文件系统。每一行有六个字段,它们的意义如下:文件系统设备文件或UUID可用于指定要挂载的文件系统的设备,UUID是一个独特的标识符,可通过blkid命令获取设备的UUID。2.挂载点:指定文件系统要挂载到的目录,可以是绝对路径(例如/mnt/data)或者相对路径(例如../data)。3.文件系统类

不同之处:NTFS与FAT32不同之处:NTFS与FAT32Feb 18, 2024 pm 10:18 PM

NTFS和FAT32是两种常见的文件系统,用于组织和管理计算机硬盘上的数据。虽然它们都具有一些共同的功能和特点,但在许多方面也有一些重要的区别。本文将探讨NTFS和FAT32之间的几个主要区别。功能和性能:NTFS(NewTechnologyFileSystem)是微软Windows操作系统中较新的文件系统,它具备许多先进的功能,如数据压缩、文件加密、

Go语言中如何处理并发文件的文件系统文件锁和进程间文件共享问题?Go语言中如何处理并发文件的文件系统文件锁和进程间文件共享问题?Oct 09, 2023 pm 05:53 PM

Go语言中处理并发文件的文件系统文件锁和进程间文件共享问题引言:在Go语言中,我们常常需要处理并发访问文件的情况,包括文件系统文件锁和进程间文件共享。本文将介绍如何使用Go语言处理这些问题,并提供具体的代码示例。一、文件系统文件锁在多个并发程序同时访问同一个文件时,为了避免出现竞争条件和数据不一致的问题,我们可以使用文件系统文件锁来进行同步。Go语言提供了s

深入了解Linux的标准文件系统(Ext2/Ext3/Ext4)深入了解Linux的标准文件系统(Ext2/Ext3/Ext4)Dec 31, 2023 pm 10:18 PM

Ext全称Linuxextendedfilesystem,extfs,即Linux扩展文件系统,Ext2就代表第二代文件扩展系统,Ext3/Ext4以此类推,它们都是Ext2的升级版,只不过增加了日志功能,且彼此向下兼容,所以Ext2被称为索引式文件系统,而Ext3/Ext4被称为日志式文件系统。备注:Linux支持很多文件系统,包括网络文件系统(NFS)、Windows的Fat文件系统。查看Linux支持的文件系统:ls-l/lib/modules/$(uname-r)/kernel/fs查看

Linux系统命令大全。Linux系统命令大全。Feb 19, 2024 pm 10:54 PM

以下是常见的Linux系统命令大全(按字母顺序排列):alias:设置命令别名awk:文本处理工具,用于提取和操作文本数据cat:连接文件并打印到标准输出cd:改变当前工作目录chmod:修改文件或目录的权限chown:修改文件或目录的所有者和所属组chroot:改变根文件系统目录cp:复制文件或目录cron:定时任务管理工具curl:用于下载或上传文件的命令行工具cut:按列提取文本数据date:显示或设置系统日期和时间dd:复制和转换文件df:显示文件系统的磁盘使用情况diff:比较文件或目

Go语言中如何处理并发文件的文件系统文件切割和文件合并问题?Go语言中如何处理并发文件的文件系统文件切割和文件合并问题?Oct 08, 2023 am 11:13 AM

Go语言中如何处理并发文件的文件系统文件切割和文件合并问题?在处理大文件时,我们常常需要将文件切割成小块进行处理,并在处理完成后将小块文件合并成一个完整的文件。在并发处理大文件时,我们希望能够充分利用多个处理器核心来提高处理速度。Go语言提供了丰富的并发处理机制和文件操作函数,可以很方便地实现文件系统文件切割和文件合并。首先,我们需要确定文件切割的大小。可以

CentOS文件系统常见问题解答CentOS文件系统常见问题解答Feb 23, 2024 pm 12:45 PM

CentOS文件系统常见问题解答在使用CentOS操作系统过程中,文件系统是一个至关重要的组成部分。它负责存储、组织和管理文件和目录,对系统的稳定运行和数据安全起着至关重要的作用。然而,不可避免地,在使用文件系统的过程中会遇到一些常见问题。本文将针对CentOS文件系统常见问题进行解答,希望能帮助读者更好地理解和处理这些问题。问题一:如何查看文件系统的使用情

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경