日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

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

發(fā)布時間:2023/12/1 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php访问服务器文件路径,PHP与服务器文件系统的简单交互 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、php.ini中關(guān)于文件上傳的設(shè)置指令

2、文件上傳過程

(1)上傳文件提交表單html代碼:

Adminstration - upoload new files

Upload new files

Upload a file

(2)php處理上傳文件代碼

①在php腳本中,需要處理的數(shù)據(jù)保存在超級變量數(shù)組$_FILES中,開啟register_globals指令可以直接通過變量名訪問這些信息;

②假如表單變量名為“username“則有:

$_FILES['userfile']['tmp_name']:儲存文件在Web服務(wù)器中的臨時保存位置;

$_FILES['userfile']['name']:儲存用戶系統(tǒng)中文件的名稱;

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

$_FILES['userfile']['type']:儲存文件的類型;

$_FILES['userfile']['error]:儲存任何與文件上傳相關(guān)的錯誤代碼;

錯誤類型說明:

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;

}

//檢驗傳輸?shù)奈募欠駷槲谋疚募?/p>

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

echo 'Problem: file is not plain text';

exit;

}

//將上傳文件包含在服務(wù)器中/uploads/的目錄下(該目錄必須獨立于Web文檔樹)

$upfile = '/uploads/'.$_FILES['userfile']['name']; //在指定目錄下以傳輸文件的文件名創(chuàng)建一個新文件

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

if(! move_uploaded_file($_FILES['userfile']['tmp_name'],$upfile)){ //將傳輸文件的臨時文件移動到創(chuàng)建的新文件

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標(biāo)記

$contents = file_get_contents($upfile); //將文件內(nèi)容提取為一個字符串;

$contents = strip_tags($contents); //對該字符串擦除html和tags標(biāo)記;

file_put_contents($_FILES['userfile']['name'],$contents); //將該字符串重新寫入文件中;

//在瀏覽器上顯示傳輸?shù)奈谋疚募?nèi)容

echo "

Preview of uploaded file contents:


>";

echo nl2br($contents);

echo "";

3、使用目錄函數(shù)

(1)從目錄中讀取文件名

①使用opendir(),readdir(),closedir()函數(shù);

$current_dir = '/uploads/'; //創(chuàng)建目錄url對象

$dir = opendir($current_dir); //打開目錄,結(jié)果返回一個目錄對象

echo "

Upload directory is $current_dir

";

echo "

Directory Listing:

  • ";

while(($file = readdir($dir)) !== false){ //讀取目錄對象

if($file != "." && $file != ".."){ //過濾當(dāng)前目錄和上一級目錄

echo "

$file";

echo "".$file."
";

}

}

echo "

";

closedir($dir); //關(guān)閉目錄;

?>

②使用php的dir類

$current_dir = '/uploads/'; //創(chuàng)建目錄url對象

$dir = dir($current_dir); //創(chuàng)建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(); //關(guān)閉目錄

?>

(2)使用scandir()函數(shù)對文本名稱進行字母表的排序方式

$current_dir = '/uploads/'; //創(chuàng)建目錄url對象

$files1 = scandir($current_dir); //將指定目錄下的文件名保存為一個數(shù)組,默認(rèn)以字母升序排序

$files2 = scandir($current_dir,1); //將指定目錄下的文件名保存為一個數(shù)組,以字母降序排序

echo "

Upload directory is $current_dir

";

echo "

Directory Listing in alphabetical order,ascending:

  • ";

foreach($files1 as $file1) {

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

echo "

$file1";

}

echo "

";

?>

(3)獲取當(dāng)前目錄的其他信息

dirname($path):返回路徑的目錄部分;

basename($path):返回路徑的名稱部分;

disk_free_space($path):返回路徑所在磁盤可以保存上傳文件的容量;

(4)創(chuàng)建和刪除目錄

①mkdir():創(chuàng)建目錄;

代碼:

$oldumask = umask(0); //重置當(dāng)前權(quán)限碼

mkdir("/tmp/testing",0777); //創(chuàng)建目錄

umask($oldumask); //恢復(fù)當(dāng)前權(quán)限碼

②rmdir():刪除目錄;

代碼:

rmdir("/temp/testing");

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

※要刪除的目錄必須是空目錄;

4、與文件系統(tǒng)的交互

(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)); //返回用戶標(biāo)識uid

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

$group = posix_getgrgid(filegroup($file)); //返回組織標(biāo)識gid

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

echo 'File permissions: '.decoct(fileperms($file))."
"; //返回8位的權(quán)限碼

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

echo 'File size'.filesize($file)."
"; //返回文件字節(jié)數(shù)

echo "

File Tests

";

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

echo 'is_executable?'.(is_executable($file) ? 'true':'false')."
"; //判斷文件是否可執(zhí)行;

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):修改文件的權(quán)限;

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

(3)創(chuàng)建、刪除和移動文件

bool touch($filename,[int time,[ int atime]]):創(chuàng)建一個文件(time指定創(chuàng)建時間戳,atime指定可選時間戳)

unlink($filename):刪除一個文件

copy($source_path,$destination_path):復(fù)制一個文件

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

(4)使用程序執(zhí)行函數(shù)

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

返回命名結(jié)果的最后一行,result變量可以返回字符組數(shù),這些字符串代表輸出的每一行,result_value獲取返回代碼;

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

結(jié)果直接輸出到瀏覽器;

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

輸出結(jié)果到瀏覽器,返回命令結(jié)果的最后一行或false;

※在用戶提交的數(shù)據(jù)包括執(zhí)行命令的一部分,應(yīng)該進行以下包裝:

system(escapeshellcmd($command));

5、與環(huán)境變量交互

phpinfo()函數(shù):獲取php的所有變量列表;

getenv("$key_name"):

setenv("$key_name=$value");

以上所述是小編給大家介紹的PHP與服務(wù)器文件系統(tǒng)的簡單交互,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

總結(jié)

以上是生活随笔為你收集整理的php访问服务器文件路径,PHP与服务器文件系统的简单交互的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。