1.软文推荐

2.软文推荐

3.软文推荐

目录: 1、Apache2.2和php5怎么加入扩展的fileinfo函数 2、SHGetFileInfo作用是什么 3、php5.5怎样启用php_fileinfo支持? 4、如何在linux安装php开发环境 5、FileInfo 这个类是干什么用的 什么意思哦 Apache2.2和php5怎么加入扩展的fileinfo函数

fileinfo()是pecl的其中的function之一

需安装pecl才能用, 要安装pecl, 必须有phpize指令

 

我们来执行

pecl install fileinfo

系统提示:

WARNING: "pear/Fileinfo" is deprecated in favor of "channel://php-src/ext/fileinfo/in php sources"

downloading Fileinfo-1.0.4.tgz ...

Starting to download Fileinfo-1.0.4.tgz (5,835 bytes)

.....done: 5,835 bytes

3 source files, building

running: phpize

sh: phpize: not found

ERROR: `phpize' failed

 

下面安装phpize

首先需要有php5-dev

直接执行phpize,系统会提示:

No command 'phpize' found, did you mean:

 Command 'phpize5' from package 'php5-dev' (main)

phpize: command not found

 

那么我们来安装php5-dev

sudo apt-get install php5-dev

安装完成后,再执行:

sudo pecl install fileinfo

 

会发现如下的错误提示:

checking for magic files in default path... not found

configure: error: Please reinstall the libmagic distribution

ERROR: `/build/buildd/php5-5.3.2/pear-build-download/Fileinfo-1.0.4/configure' failed

那么再安装一下libmagic:

sudo apt-get install libmagic-dev

安装完成后,再执行:

sudo pecl install fileinfo

 

ok,看到了这样的提示:

Installing '/usr/lib/php5/20090626/fileinfo.so'

install ok: channel://pear.php.net/Fileinfo-1.0.4

说明Fileinfo 安装完成,

我们会发现

php模块的目录下多了个fileinfo.so文件,同时,

在/usr/share/file目录下有magic.mime和magic两个文件。

然后需要修改php.ini文件,加入

 extension=fileinfo.so

 

重启nginx和fastcgi

 

 

 

在自己的web页面上加入下面这段测试代码:

?php

// return mime type ala mimetype extension

$finfo = finfo_open(FILEINFO_MIME_TYPE);

if (!$finfo) {

    echo "Opening fileinfo database failed";

    exit();

}

/* get mime-type for a specific file */

$filename = "/ciray/images/copyright.gif";  //这里写你的WEB目录中要测试的文件路径 

echo $filename . ' -- ' . finfo_file($finfo, $filename) . 'br';

?

 

运行一下,如果显示

/ciray/images/copyright.gif -- image/gif

说明大功告成!SHGetFileInfo作用是什么

SHGetFileInfo函数

function SHGetFileInfo(pszPath: PAnsiChar; dwFileAttributes: DWORD;

var psfi: TSHFileInfo; cbFileInfo, uFlags: UINT): DWORD; stdcall;

pszPath 参数:指定的文件名。

当uFlags的取值中不包含 SHGFI_PIDL时,可直接指定;

当uFlags的取值中包含 SHGFI_PIDL时pszPath要通过计算获得,不能直接指定;

dwFileAttributes参数:文件属性。

仅当uFlags的取值中包含SHGFI_USEFILEATTRIBUTES时有效,一般不用此参数;

psfi 参数:返回获得的文件信息,是一个记录类型,有以下字段:

_SHFILEINFOA = record

hIcon: HICON; { out: icon } //文件的图标句柄

iIcon: Integer; { out: icon index } //图标的系统索引号

dwAttributes: DWORD; { out: SFGAO_ flags } //文件的属性值

szDisplayName: array [0..MAX_PATH-1] of AnsiChar; { out: display name (or path) } //文件的显示名

szTypeName: array [0..79] of AnsiChar; { out: type name } //文件的类型名

end;

cbFileInfo 参数:psfi的比特值;

uFlags 参数:指明需要返回的文件信息标识符,常用的有以下常数:

SHGFI_ICON; //获得图标

SHGFI_DISPLAYNAME; //获得显示名

SHGFI_TYPENAME; //获得类型名

SHGFI_ATTRIBUTES; //获得属性

SHGFI_LARGEICON; //获得大图标

SHGFI_SMALLICON; //获得小图标

SHGFI_PIDL; // pszPath是一个标识符

函数SHGetFileInfo()的返回值也随uFlags的取值变化而有所不同。

可见通过调用SHGetFileInfo()可以由psfi参数得到文件的图标句柄。但要注意在uFlags参数中不使用SHGFI_PIDL时,SHGetFileInfo()不能获得“我的电脑”等虚似文件夹的信息。

应该注意的是,在调用SHGetFileInfo()之前,必须使用 CoInitialize 或者OleInitialize 初始化COM,否则表面上能够使用,但是会造成不安全或者丧失部分功能。例如,一个常见的例子:如果不初始化COM,那么调用该函数就无法得到.htm/.mht/.xml文件的图标。

以下是两个例子:

1.获得系统图标列表:

//取得系统图标列表

uses

ShellAPI

var

ImageListHandle : THandle;

FileInfo: TSHFileInfo;

//小图标

ImageListHandle := SHGetFileInfo('C:',

0,

FileInfo,

SizeOf(FileInfo),

SHGFI_SYSICONINDEX or SHGFI_SMALLICON);

//把图标列表同一个名叫ListView1的ListView控件的小图标关联。

SendMessage(ListView1.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, ImageListHandle);

//大图标

ImageListHandle := SHGetFileInfo('C:',

0,

FileInfo,

SizeOf(FileInfo),

SHGFI_SYSICONINDEX or SHGFI_LARGEICON);

//把图标列表同一个名叫ListView1的ListView控件的大图标关联。

SendMessage(ListView1.Handle, LVM_SETIMAGELIST, LVSIL_NORMAL, ImageListHandle);

2.获得一个文件的显示名和图标

var

sfi: TSHFileInfo;

IconIndex : Integer;

//取图标的索引号等信息

SHGetFileInfo(PAnsiChar(FileName),

0,

sfi,

sizeof(TSHFileInfo),

ShellAPI.SHGFI_DISPLAYNAME or ShellAPI.SHGFI_TYPENAME or ShellAPI.SHGFI_LARGEICON or ShellAPI.SHGFI_ICON);

//显示名和图标在系统图标列表中的编号就分别在sfi.szDisplayName和sfi.iIcon中

php5.5怎样启用php_fileinfo支持?

fileinfo 是php的一个扩展,你需要在安装时候查看是否有这个扩展包,如果有,那就在php.ini写 extension=php_fileinfo.dll  就可以了,如果有这一行,就删除前面的分号。

PHP 是一种在服务器端执行,嵌入到HTML文档的脚本语言,早期的风格类似于C语言与Perl语言,被广泛的运用于网络开发中。PHP6是下一代PHP版本,主要特性为支持Unicode标准。2015年6月11日,PHP官网发布消息,正式公开发布PHP7第一版的alpha版本。

《PHP 5.5从零开始学(视频教学版)》循序渐进地介绍了PHP 5.5开发动态网站的主要知识和技能,提供了大量的PHPPHP应用实例供读者买践。每一章节都清晰讲述了代码作用及其编写思路,使读者能在最短时间内迅速掌握PHP的应用开发技能。全书共22章,分别介绍了PHP 5.5的基本概念、PHP服务器环境配置、PHP的基本语法、PHP的语言结构、字符串和正则表达式、数组、时间和日期、面向对象、错误处理和异常处理、PHP与Web页面交互、文件与目录操作、图形图像处理、Cookie与会话管理、MySQL数据库基础、PHP操作MySQL数据库、PDO数据库抽象类库、PHP与JavaScript综合应用、PHP与XML技术的综合应用、PHP与Ajax的综合应用、Smarty模版、Zend framework框架等,最后通过一个PHP+MySQL数据库的综合案例,使读者进一步巩固所学的知识,提高综合实战能力。

如何在linux安装php开发环境

我一般会选用源码安装 php,安装 php 的过程指定要安装的扩展,但是避免不了缺少某个扩展未安装导致程序运行报错的问题。以 fileinfo 为例,介绍一下怎么添加 php 扩展。

1. 准备

通常遇到报错:xxx function undefined,而这个函数是系统函数的话,那一定是你缺少某个扩展。添加扩展也非常简单。首选要确认当前的 php 是哪个版本,不同版本的 php 扩展会有些许出入。然后找到 Php 源码目录,也就是从网上下载下来并且解压的 php 文件包。添加扩展的时候需要在源码包里面去执行命令。

2. 安装 fileinfo 扩展

1. 确认 php 版本

php -v

# PHP 7.4.4 (cli)

2. 找到 php 可执行文件的位置

whereis php

# php: /usr/local/php /usr/local/php/bin/php

可以看出 php 执行文件在 /usr/local/php/bin 目录里面

那么尝试执行 phpize,保证这个文件存在,phpize 命令在添加扩展的时候需要用到

/usr/local/php/bin/phpize -v

# Configuring for:

# PHP Api Version: 20190902

# Zend Module Api No: 20190902

# Zend Extension Api No: 320190902

3.进入php源码目录

我的习惯是网络下载的软件会放在 /usr/local/src 下面,

cd /usr/local/src/php-7.4.4

cd /etc

cd fileinfo

扩展都在源码目录的 etc 下面,里面有 curl,gd,ftp 等等扩展目录,我要安装 fileinfo,所以到 fileinfo 目录里面

4.开始安装

确定目录下面有 config.m4 文件,如果没有,应该会有 config0.m4 文件,把 config0.m4 复制一份为 config.m4,如果没有这个文件,会报错:can not found config.m4

/usr/local/php/bin/phpize

./configure

make make install

如果这几行命令运行下来都没有报错,那么说明扩展文件已经生成,并且已经自动移入相应位置。接下来就是修改 php.ini,追加 extension=fileinfo.so 到 php.ini 中。

5.修改php.ini,加载扩展文件

查看 php.ini 的位置

php -i | grep php.ini

#Configuration File (php.ini) Path = /usr/local/php/etc

#Loaded Configuration File = /usr/local/php/etc/php.ini

可以看到 php.ini 的位置: /usr/local/php/etc/php.ini

vim /usr/local/php/etc/php.ini

#添加extension=fileinfo.so,保存

php -m | grep fileinfo

#fileinfo

看到输出 fileinfo,至此,fileinfo 扩展安装完毕!另外可以使用 pecl 命令安装,更方便快捷!

FileInfo 这个类是干什么用的 什么意思哦

.NET内建类型中提供了FileInfo和DirectoryInfo俩个类型,分别用来操作文件和文件夹,有别于File和Directory类型,FileInfo和DirectoryInfo主要功能在于操作文件和文件夹在文件系统中的结构,完成诸如:创建,复制,读取信息,移动,判断是否存在,删除等功能。public class UseFileInfo

{

//static void Main(string[] arg)

//{

// Processfile();

// Console.Read();

//} static void Processfile()

{

FileInfo info = null;

FileInfo newInfo = null;

//创建文件

info = new FileInfo("c:\test1.txt");

using (FileStream fs = info.Create())

{ }

Console.WriteLine("原始文件:");

ReadFileInfo(info);

//移动文件

info.MoveTo("c:\test2.txt");

Console.WriteLine("移动后的新文件:");

ReadFileInfo(info);

//复制文件

newInfo = info.CopyTo("c:\test3.txt");

Console.WriteLine("复制后的新文件:");

ReadFileInfo(newInfo);

} static void ReadFileInfo(FileInfo fi)

{

Console.WriteLine("文件名为:"+fi.Name);

Console.WriteLine("文件在:"+fi.DirectoryName);

Console.WriteLine("文件的长度:"+fi.Length);

Console.WriteLine("文件创建于:"+fi.CreationTime);

Console.WriteLine("文件的最后访问时间:" + fi.LastAccessTime);

Console.WriteLine("文件的最后修改时间:" + fi.LastWriteTime);

Console.WriteLine("文件全名是:" + fi.FullName);

Console.WriteLine("文件的扩展名是:" + fi.Extension);

}

} public class UseDirectoryInfo

{

static void Main(string[] args)

{

ProcessDirectoryInfo();

Console.Read();

} static void ProcessDirectoryInfo()

{

DirectoryInfo di = null;

di = new DirectoryInfo("c:\text");

di.Create();

di.CreateSubdirectory("subidc"); FileInfo info = new FileInfo("c:\text\subidc\text.txt");

using (FileStream fs = info.Create()) { }

ReadDirectoryInfo(di);

di.MoveTo("c:\test2");

} static void ReadDirectoryInfo(DirectoryInfo di)

{

Console.WriteLine("文件夹名为:"+di.Name);

Console.WriteLine("父文件夹为:"+di.Parent.Name);

Console.WriteLine("文件夹创建于:"+di.CreationTime);

Console.WriteLine("文件夹的最后修改时间:" + di.LastWriteTime);

Console.WriteLine("文件夹的最后访问时间:" + di.LastAccessTime);

Console.WriteLine("文件夹的全名是:" + di.FullName);

Console.WriteLine("文件夹中的文件:");

FileInfo[] fis = di.GetFiles();

foreach (FileInfo fi in fis)

{

ReadFileInfo(fi);

}

Console.WriteLine("文件夹中的子文件夹:");

DirectoryInfo[] dis = di.GetDirectories();

foreach (DirectoryInfo dd in dis)//递归获取所有子文件夹

{

ReadDirectoryInfo(dd);

}

} static void ReadFileInfo(FileInfo fi)

{

Console.WriteLine("文件名为:" + fi.Name);

Console.WriteLine("文件在:" + fi.DirectoryName);

Console.WriteLine("文件的长度:" + fi.Length);

Console.WriteLine("文件创建于:" + fi.CreationTime);

Console.WriteLine("文件的最后访问时间:" + fi.LastAccessTime);

Console.WriteLine("文件的最后修改时间:" + fi.LastWriteTime);

Console.WriteLine("文件全名是:" + fi.FullName);

Console.WriteLine("文件的扩展名是:" + fi.Extension);

}

}

相关文章 8

1

域名预定怎么做?域名预定有什么规则?(域名怎么设) 38秒前

众所周知,现如今的很多精品域名已经被他人注册了,想要获得精品域名就需要大家去购买。其实还有一种域名购买途径就是。那么你知道...

2

韩国vps好用吗(韩国vps哪个牌子好) 3分钟前

目录:1、韩国VPS租用优势与缺陷是啥?2、vps做站好吗3、最近找到一家很好的韩国vps,分享给大家kdatacenter。4、vps韩国uplus线路好吗韩国VPS租...

3

网站云服务器价格(阿里巴巴云服务器价格) 6分钟前

网站云服务器价格是多少?很多新手用户购买云服务器之前都会问,价格是多少。其实云服务器的配置是决定租用价格的主要因素,另外云...

5

企业建网站(企业建网站需要多少钱) 9分钟前

目录:1、如何创建企业网站2、如何建设一个公司网站3、怎样建立自己公司的网站?如何创建企业网站 企业门户网站是网上宣传企业形象和...

6

如何为JustHost美国空间商注册的域名购买whois隐私(justhost怎么样) 10分钟前

我们注册域名的时候都是需要提供一些个人信息的,而且这些信息都要求是真是的,这就导致了我们的信息可能会被泄漏。为了保护自己的...

7

docker容器有几种状态(docker容器有几种状态,设置这些状态的docker命令) 13分钟前

docker容器有几种状态?docker作为应用容器中最引人瞩目的实现方式,在近几年得到飞速的发展,大有成为应用容器事实标准的趋势,国内外...

8

phpstudy安装教程(phpstudy安装包) 15分钟前

目录:1、在Windows系统服务器上用phpstudy搭建一个Linux环境做网站怎么样?2、linux下phpstudy怎么安装php环境变量3、w7下用phpstudy(其他环境)的...