unix 查找文件

        如果你用的是linux,首先可以考虑用locate方法,一般够用了,而且速度很快,当然在用这个命令之前要生成文件数据库[execute updatedb in console],下面的是关于find的用法,具有通用性,在unix下也可以用 
每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。

        可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查找”命令来寻找在硬盘上的文件。Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式那么方便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后缀就非常容易查找到。Linux中查找文件的命令通常为“find”命令,“find”命令能帮助我们在使用,管理Linux的日常事务中方便的查找出我们需要的文件。对于Linux新手来说,“find”命令也是了解和学习Linux文件特点的方法。因为Linux发行版本繁多,版本升级很快,在Linux书籍上往往写明某个配置文件的所在位置,往往Linux新手按图索骥还是不能找到。比如说REDHAT Linux 7.O和REDHAT Linux 7.1中有些重要的配置文件所在的硬盘位置和文件目录就有了很大的改变,如果不学会使用“find”命令,那么在成千上万的Linux文件中要找到其中的一个配置文件是相当困难的,笔者在没有精通“find”命令之前就吃过这样的苦头。好,下面就详细为大家介绍强大的“find”命令的全部使用方法和用途。

通过文件名查找法:
        这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls”命令就能方便的查找出来,那么使用“find”命令来查找它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这是可以使用如下命令:
find / -name httpd.conf  

        这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:
etc/httpd/conf/httpd.conf  

        这就是httpd.conf这个文件在Linux系统中的完整路径。查找成功。
如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/ -name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了Apache Web服务器,然后再使用find / -name httpd.conf就能找到这个配置文件了。

无错误查找技巧: 
        在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用“find”命令时也有可能遇到这样的问题,那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用“find”命令来查询这些目录或者文件。当普通用户使用“find”命令来查询这些文件目录是,往往会出现”Permissiondenied.”(禁止访问)字样。系统将无法查询到你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,输入
find / -name access_log 2>/dev/null  

        这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。 

        在Linux系统查找文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中查找某个文件就要花费相当长的一段时间,特别是大型Linux系统和容量较大的硬盘,文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省很多时间了。使用find /etc -name httpd.conf 就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。这里再说明一下“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,而“find/etc”就是只在 etc目录下查找文件。因为“find/etc”表示只在etc目录下查找文件,所以查找的速度就相应要快很多了。

根据部分文件名查找方法: 
        这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在Linux中根据部分文件名查找文件的方法要比在WINDOWS中的同类查找方法要强大得多。例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现的,输入:
find /etc -name ’*srm*’  

        这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如 absrmyz, tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:
find/etc -name ’srm*’   

        这是只有像srmyz 这样的文件才被查找出来,象absrmyz或者 absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了。

根据文件的特征查询方法: 
        如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的”搜索”功能是基本相同的。在微软的”搜索”中WINDOWS中的”搜索助理”使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在Internet 上搜索更加容易。”搜索助理”还包括一个索引服务,该服务维护了计算机中所有文件的索引?
??使得搜索速度更快。使用”搜索助理”时,用户可以指定多个搜索标准。例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文本的文件。如果用户正使用 Active Directory,这时还可以搜索带有特定名称或位置的打印机。 

        例如我们知道一个Linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询find / -size 1500c,字符 c 表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定大小的文件,而使用“-”则表示要求系统列出小于指定大小的文件。下面的列表就是在Linux使用不同“ find”命令后系统所要作出的查找动作,从中我们很容易看出在Linux中使用“find”命令的方式是很多的,“ find”命令查找文件只要灵活应用,丝毫不必在WINDOWS中查找能力差。

find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件 

        下面的列表就是对find命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关Linux有关书籍可以知道所有find命令的查找函数。
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变状态的文件
-ctime n
查找系统中最后n*24小时被改变状态的文件
-empty
查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
-false
查找系统中总是错误的文件
-fstype type
查找系统中存在于指定文件系统的文件,例如:ext2 .
-gid n
查找系统中文件数字组 ID 为 n的文件
-group gname
查找系统中文件属于gnam文件组,并且指定组和ID的文件

Find命令的控制选项说明:
Find命令也提供给用户一些特有的选项来控制查找操作。下表就是我们总结出的最基本,最常用的find命令的控制选项及其用法。 
选项
用途描述
-daystart
.测试系统从今天开始24小时以内的文件,用法类似-amin
-depth
使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容
-follow
遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询
-help
显示命令摘要
-maxdepth levels
在某个层次的目录中按照递减方法查找
-mount
不在文件系统目录中查找, 用法类似 -xdev.
-noleaf
禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找
-version
打印版本数字 

        使用-follow选项后,find命令则遵循通配符链接方式进行查找,除非你指定这个选项,否则一般情况下find命令将忽略通配符链接方式进行文件查找。 

        -maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样导致查找速度变慢,查找花费的时间过多。例如,我们要在当前(.)目录技巧子目录中查找一个名叫fred的文件,我们可以使用如下命令
find . -maxdepth 2 -name fred  

        假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找很容易成功。假如,这个文件在./sub1/sub2/fred目录中,那么这个命令就无法查找到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的文件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查找成功。

使用混合查找方式查找文件 
        find命令可以使用混合查找的方法,例如我们想在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件,我们可以使用-and 来把两个查找选项链接起来组合成一个混合的查找方式。
find /tmp -size +10000000c -and -mtime +2  

        学习过计算机语言的朋友都知道,在计算机语言里,使用and ,or 分别表示“与”和“或”的关系。在Linux系统的查找命令中一样通用。
还有这样的例子,
find / -user fred -or -user george 

我们可以解释为在/tmp目录中查找属于fred或者george这两个用户的文件。
在find命令中还可以使用“非”的关系来查找文件,如果我们要在/tmp目录中查找所有不属于panda的文件,使用一个简单的
find /tmp ! -user panda  
命令就可以解决了。很简单。

查找并显示文件的方法
查找到某个文件是我们的目的,我们更想知道查找到的文件的详细信息和属性,如果我们采取现查找文件,在使用LS命令来查看文件信息是相当繁琐的,现在我们也可以把这两个命令结合起来使用。
find / -name “httpd.conf” -ls 

系统查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息。
12063 34 -rw-r–r– 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf

下面的表格就是一些常用的查找文件并显示文件信息的参数和使用方法
选项
用途描述
-exec command;
查找并执行命令
-fprint file
打印文件完整文件名
-fprint0 file
打印文件完整文件名包括空的文件
-fprintf file format
打印文件格式
-ok command;
给用户命令执行操作,根据用户的Y 确认输入执行
-printf format
打印文件格式
-ls
打印同种文件格式的文件.

总结:到这里为止我们已经学习了这名多关于find命令的使用方法,也列出了很多常用的find命令的选项,如果我们能熟练掌握在Linux中find命令的使用方法,那么在Linux中查找文件也不是一件困难的事
情。 

freebsd6.2的gnome2桌面安装配置手记

1、安装freebsd6.2。
这里我选择的是最小化安装。

2、安装xorg。
pkg_add  -r xorg

3、安装gnome2。
pkg_add -r gnome2

4、生成、测试相关的配置文件

Xorg -configure
将生成xorg.conf.new文件在/root/目录下。
Xorg -configure /root/xorg.conf.new(6.2做这步时似乎必须加上/root/)
这里测试下生成的配置文件,会出现1个布满小格子的大方框,并且应该有一个鼠标箭头。
然后ctrl+alt+backspace返回文字符界面。
然后编辑一下xorg.conf.new文件,然后拷贝至/etc/X11/xorg.conf

5、配置窗口管理器
在/etc/rc.conf里加入gdm_enable=”YES”
然后重新启动,就可以自动进入GUI界面了。

在FreeBsd中安装ports

FreeBsd中安装ports
一.首先进入要安装的port的目录
#cd /usr/ports/www/apache22
二.执行make命令进行编译
#make
会出现一些提示信息,一旦编译完,就会回到命令行,下一步是安装port,只要在make后面添加一个单词install即可.
三.安装port
#make install
会出现一些提示信息,完毕后会回到提示符,您就可以运行您安装的程序了
四.清除安装时产生的一些临时信息:
#make clean
清理工作目录是个好注意,这个目录中包含了全部在编译过程中用到的临时文件,这些文件不公会占用宝贵的磁盘空间,而且可能给升级port时带来麻烦.

至此,安装ports的步骤基本已经完成.

注:以上三个命令make,make install,make clean可以使用组合命令make install clean来代替.

FreeBSD6.2安装图解

FreeBSD是一个优秀的多用户系统,其最新版本为6.2。
FreeBSD的最大好处在于它只有一个发行版,一劳永逸!严格的说,FreeBSD属于一个学习系统,它不像Linux一样追求的是好玩(不过要玩透Linux也是需要花一些功夫的),要想在系统底层方面有所突破的话,建议有心的朋友安装FreeBSD或是Debian!FreeBSD的安装过程不管是分区、创建文件系统、安装相关组件等操作都异常简洁,很容易入门。

获得FreeBSD的途径
FreeBSD和大多数自由软件一样,不光是可以从其官方站点(www.freebsd.org)获得完全免费的版本,而且可以在世界上的任何地方找到FreeBSD的安装CD。从CD-ROM(或其它介质)上安装FreeBSD其实也十分简单,虽然它并没有图形界面而是一种伪图形界面。

安装过程
本文以安装FreeBSD6.2为例,下载地址:
ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/6.2/。disk1是安装盘,disk2是一些软件包的盘。最好将下载的安装文件做成启动光盘,启动第一张盘后将会出现下图所示启动画面:

第一步:按选项1即可进入FreeBSD默认安装主菜单(如图2所示)。使用键盘的上下箭头可以移动到不同的安装选项,敲空格或者回车键即可进入具体内容,FreeBSD所有安装配置都可以在此开始!虽然都是英文,但也十分简单,有过一定电脑使用时间的朋友不难读懂,接下来进入选择国家的选择界面(如下图),我们按向上的方向键选择China后按回车:

接下来我们进入了键盘布局选择,如下图,选择默认的即可:

在接下来的界面中(如下图)我们选择“Custom(自定义)”开始一个标准的自定义安装过程:

第二步:进入下图所示自定义安装界面,“Exit”就不用说了吧,为退出此菜单;“Options”为查看/设置安装选项;“Partition”是分配系统分区,“Label”则是设置系统分区;“Distributions”指让我们选择安装内容;“Media”是选择安装界质;最后一个选项是指所有设置完毕后开始安装。这里我们先选择“Media”,定义我们的安装介质,即告诉安装程序我们是从光盘安装还是从硬盘安装:

由于本文是以从光盘安装为例,故应在下图中选择第一项“CD/DVD”,点击OK即完成这一步设置并会自动返回上图的界面:

第三步:接着选择“Partition”开始建立系统分区(如下图)。这就是FreeBSD的分区程序,可以发觉跟DOS下的FDISK有几分相似。鼠标所在部分为操作提示,高亮部分为整个硬盘大小。按A是使用整个分区来安装FreeBSD;如果你不希望这样,可以接C来自定义分区,类似FDISK,直接输入每一个分区的大小即可;其它的就不一一详说了,比较易懂.

分好后按Q退出时会出现如下图所示界面,选择第一项即安装FreeBSD启动管理器。

第四步:上一步建立好分区之后,即可开始设置了。返回图3的界面选择“Label”进入设置分区主界面。它的界面跟上一步的类似,同样采用热键的方法操作,一般我们按A即可(让FreeBSD自动设置):
/    256M
注:这里面的文件很重要,启动文件、基本的库和大部分配置文件都是在这里,最好不要在这里进行写操作。
/swap     1024M
注://交换区,按道理说要是内存的2倍左右,如果你的内存较小,更应注意调大此分区空间,在基于Linux的系统里交换区可以说是救命稻草!
/home     1000M
注:存自己的东西,适当大点。
/var     1000M
注:主要存放邮箱,打印缓冲区和日志文件等内容,故此分区的大小就要看你的实际需要了,此区读写很频繁。
/tmp     512M
注:临时文件夹,不要太大,太浪费;也不要太小,太小了有时候编译文件会空间不够。不可小视此分区,它可以将FreeBSD崩溃后文件系统的损坏度降到最低,建议最低设为128M
/usr 剩下的空间
注:这个尽量大点,用于存放大量支持系统的文件,很多软件都是安装这里的,还可以细分为/usr/local,看自己喜好了。

最后分区设置如下图所示:

第五步:安装FreeBSD具体内容。
返回图3的主菜单后选择“Distributions”后进入下图所示选项界面:

从图中可见,选项很多,可以根据你需要安装,这里我们选择“Custom”自定义安装。在下一个对话框中不用管其它的选项,直接选择第一项“ALL”回车!之后会有一个对话框弹出,这个对话框是问你是否安装ports,这里面有些软件会用到,如果有必要的话,装上也可以,看你自己情况,选YES或NO即完成此步.接着返回两次后,选最后一项“commit”开始最后安装;点OK后安装程序会出现下图所示的提示信息,大致意思是:“是否确认要开始安装过程,这是最后的一次选择”:

这个对话框相信大家明白吧,如果你怕什么地方设置有错,可以再返回重新设置,如果没有问题点yes就开始安装,如下图:

安装最后会提示你是否需要进入配置菜单改变其他相关设置,如果没必要选择no即完成整个安装过程!如下图:

如果选择yes则可以对鼠标、网络等进行其它相关设置,如下图,这里我们不作介绍了,一般选择no即可。

安装完成重新启动后,如linux启动过程一样,经过文字检测界面后就会出现Login提示符,如图11所示,输入帐号root回车即可,如下图:

输入root即可登陆,打入命令passwd即可更改密码,输入startx即可进入xwindows界面,当然如果要更好的图形界面,那么就去安装gnome桌面吧。

输入root即可登陆,打入命令passwd即可更改密码,输入startx即可进入xwindows界面,当然如果要更好的图形界面,那么就去安装gnome桌面吧。

第六步:配置Xorg和Gnome

一、安装Xorg
Xorg或XFree86都可以在FreeBSD上安装。从FreeBSD 5.3-Release开始,Xorg成为FreeBSD上的默认X11实现。Xorg是由X.Org基金会发行的开放源代码X Window系统实现中的X服务。Xorg基于XFree86 4.4RC2 和X11R6.6的代码。X.Org基金会在2004年发行了X11R6.7,并在2005年2月发布了X11R6.8.2,后者可以从目前的FreeBSD Ports Collection中获得的版本。本文描述的方法在FreeBSD 6.2-Release 测试通过。
安装Xorg:
1、在终端执行sysinstall。
#sysinstall
2、将FreeBSD Disk #1 放入光驱中。
3、依次选择Configure->;Packages->CD/DVD->All->XOrg-6.9.0。
4、选择OK。
5、选择Install。
6、有一个图形工具xorgcfg,通过它可以选择合适的驱动和设置交互式地定义配置。这个程序可以从控制台通过命名xorgcfg -textmode来直接启动,启动后按提示即可完成操作。
8、测试新生成的xorg.conf.new配置文件。
#Xorg -config xorg.conf.new
如果看到一个黑灰的格子和一个X形的鼠标指针,那么配置就是成功的。如果要退出测试,只要同时键入Ctrl+Alt+Backspace。如果鼠标工作不正常,则需要先配置它。
9、将配置文件拷贝到公共目录中
#cp xorg.conf.new /etc/X11/xorg.conf
10、执行startx,测试X11
#startx
如果看到一个黑灰的格子和一个X形的鼠标指针,那么Xorg就配置成功了,同时键入Ctrl+Alt+Backspace退出。
二、安装Gnome
仅仅只安装Xorg还不能使用FreeBSD的图形界面,还需要安装一个桌面环境,例如Gnome或KDE。
1、在终端执行sysinstall。
#sysinstall
2、将FreeBSD Disk #1 放入光驱中。
3、依次选择Configure->;Packages->CD/DVD->All->gnome2-2.16.1_1
4、选择OK。
5、选择Install。
6、#ee .xinitrc  (没有这个文件也这样做)
在这里输入 exec gnome-session
保存退出
然后 #startx就可以进入你的X-gonme了(如果你想开机就用图形方式进入X,你可以在/etc/rc.conf中添加 gdm_enable=”YES”)
好了,看到了X就先行了,下面配置安装其它软件呢什么的呢。ctrl+alt+backspace退回终端。
7、执行startx
%startx
即可进入FreeBSD桌面环境。

说明:

要从网络安装GNOME, 只要键入:

# pkg_add -r gnome2

从源代码编译GNOME,可以使用 ports树:

# cd /usr/ports/x11/gnome2
# make install clean

一旦装好了 GNOME, 就必须告诉 X server 启动 GNOME 而不是默认的窗口管理器。

最简单的启动 GNOME 的方法是使用 GDM, GNOME 显示管理器。 随 GNOME 桌面一同安装的 GDM (但默认是禁用的), 可以通过在 /etc/rc.conf 中加入 gdm_enable="YES" 来启用。 这样在重新启动的时候, GNOME 就会在登录时自动启动 ── 除此之外不需要进一步设置了。

GNOME 也可以通过适当地配置名为 .xinitrc 的文件来启动。 如果已经有了自定义的 .xinitrc, 将启动当前窗口管理器的那一行改为启动 /usr/local/bin/gnome-session 就可以了。 如果还没有,那么只需简单地:

% echo "/usr/local/bin/gnome-session" > ~/.xinitrc

接下来输入 startxGNOME 桌面环境就启动了

ADODB中GetOne($sql)与GetRow($sql)的区别

GetOne($sql)

Executes the SQL and returns the first field of the first row as an array. The recordset and remaining rows are discarded for you automatically. If an error occur, false is returned.

        执行SQL指令,并且以阵列的方式回传第一笔记录的第一个栏位。资料集及其余的记录将会被自动清除,如果发生错误,就回传 false 值。

译者注:这个功能在验证某笔记录在不在特别有用,可以减少系统记忆体及资源的用量。

GetRow($sql)

        执行SQL指令,并且以阵列的方式回传第一笔记录。资料集及其馀的记录将会被自动清除,如果发生错误,就回传 false 值。

        其中GetOne($sql)为了检测某一条记录是否存在时,特别有用,(如,用户在注册前,可以检测用户名是否已经被占用,比较适合GetOne($ql)).如果此时需要除检测该记录是否存在,并保存该记录的信息,就要用到GetRow($sql)了,如用户登陆时,如果没有找到该用户的信息,则登陆失败,否则保存用户的注册信息到SESSION或COOIKE中,转到用户控制面板.

修改MySQL的默认密码

对于windows平台来说安装完mysql后,系统就已经默认生成了许可表和账户,你不需要像在Unix平台上那样执行 mysql_install_db脚本来生成帐户和相应权限许可表。

但是如果不是用MSI格式来安装MySQL的话,就需要在安装完以后,手动给 root帐户添加新密码,因为默认情况下的root没有开启密码保护功能,如果不重新赋予root帐户密码,那么许多非本机的连接将 无法成功。具体更新密码步骤如下:

c:>mysql -u root

mysql>set passWord for ‘root’@’localhost’=password(‘newpasswd’);

mysql>set password for ‘root’@’%’=password(‘newpasswd’); //本条可选

通过以上设置,root的密码将变为newpasswd这样就完成了根用户root密码的设置工作。

php上传大文件注意事项

    最近用php传大文件的时候,总是传不上,起始只是看了一下php.ini里的max_post_size的值,默认是8M,一直没有搞清楚到底是怎么回事,后来在一篇文章上看到还有一个upload_max_filesize 参数,这时才明白怎么回事,结果把默认的2M改成8M,重新上传,结果ok,上传成功了!

    以下是常见的一些上传附件时的一些问题,大家可以参考一下:

用php上传文件,问题最多的就是上传大体积文件时出现错误。
这就涉及到php的配置文件:php.ini

在此配置文件中,有这么几个值是跟文件上传有密切关系的:
file_uploads = on //是否允许系统支持文件上传
;upload_tmp_dir //临时文件的存储路径,linux下为系统默认路径,win32下需要指定
upload_max_filesize = 2m //允许文件上传最大体积

post_max_size = 2m //通过post方法给php时,php所能接受的最大数据容量

如果你上传的文件体积在8m一下(通常情况),那修改以上设置就可以满足你的要求了。。

但要 >8m,那除了上面几个值,还要特别关注另外两个值了:
max_execution_time = 30 //每个script所执行的最大时间(php上传就时,体积大了,就是个时间问题)
memory_limit = 8m //每个script所能消耗的最大memory

试着把这两个值改大些。一般就可以解决大多数问题了。

就此推断,上传文件的体积是可以无穷大的。但还要考虑你的网络情况,等等。

在php.net上,有人说按照这个方法改了后,大于100m的文件还是会出错。
不知道是不是php本身的问题了:(
—————————————————————

没问题!我做的网站,WEB管理平台中有影视上传栏目,在LAN中上传,最大的传过200M没问题。当然前提是前面的PHP.INI就像上面一样设置好
—————————————————————

PHP.INI里有设置

好象默认是8M吧
—————————————————————

只要你设置正确,服务器有足够处理能力,网络没有任何丢包现象,支持续传,对上传字节没有上限
—————————————————————

Smarty中类的继承

Extended Setup
This is a continuation of the basic installation, please read that first!
A slightly more flexible way to setup Smarty is to extend the class and initialize your Smarty environment. So instead of re-
peatedly setting directory paths, assigning the same vars, etc., we can do that in one place. Lets create a new directory /
php/includes/guestbook/ and make a new file called setup.php. In our example environment, /php/includes is in
our include_path. Be sure you set this up too, or use absolute file paths.

Example 2.10. Editing /php/includes/guestbook/setup.php

<?php
// load Smarty library
require(‘Smarty.class.php’);
// The setup.php file is a good place to load
// required application library files, and you
// can do that right here. An example:

 

// require(‘guestbook/guestbook.lib.php’);
class Smarty_GuestBook extends Smarty {
function Smarty_GuestBook()
{
// Class Constructor.
// These automatically get set with each new instance.
$this->Smarty();
$this->template_dir = ‘/web/www.example.com/smarty/guestbook/templates/’;
$this->compile_dir = ‘/web/www.example.com/smarty/guestbook/templates_c/’;
$this->config_dir = ‘/web/www.example.com/smarty/guestbook/configs/’;
$this->cache_dir = ‘/web/www.example.com/smarty/guestbook/cache/’;
$this->caching = true;
$this->assign(‘app_name’, ‘Guest Book’);
}
}
?>

Now lets alter the index.php file to use setup.php:
Example 2.11. Editing /web/www.example.com/docs/guestbook/index.php

<?php
require(‘guestbook/setup.php’);
$smarty = new Smarty_GuestBook();
$smarty->assign(‘name’,’Ned’);
$smarty->display(‘index.tpl’);
?>

Now you see it is quite simple to bring up an instance of Smarty, just use Smarty_GuestBook() which automatically ini-tializes everything for our application.

 

要命的极品口误笑话

1.有一次,我同学询问我另一个同学在医院是哪一科的,我记不太清楚了,觉得又像是内科又像是针灸科,结果就说她是:内疚科的。

2.一男生看到舅舅:“买舅啊,二菜!“舅舅:“这孩子,这么大话了,连人都不会说!“

3.我上学时候的团支书特别不会说话,我入团的时候只有我和另一个女生(属于惨不忍睹那种)我们的团支书主持的时候毫不犹豫就说:今天是两位同学大喜的日子,其余同学全体笑翻-_-0过了一个学期又是这位老兄主持另一位同学的入团仪式的时候说道欢迎XXX同学加入我们这个神秘的组织中来……

4.我有一特腼腆的男同学,去食堂打早饭,窗口里那伙计问他:“要点儿什么?“他低着头说:“我要……我要……一个包子和一个包子。“那伙计盯了他半天,说:“你要什么呢?再说一遍?““我要一个包子和一个包子……哦不!一个包子和一个面包!“伙计FAINT!

5.大学时候,一同学和我争论问题,一时处于下风,情急中一拍桌子起身大叫:你胡说,我又不是不傻!

6.我一哥们去相亲,回来大家问他怎么样,哥们讲:这个女孩真糙。中午到了饭点,2个人进了一家牛肉拉面馆,女孩对师傅大声说道:嘿,给拉2碗~~~拉面的师傅说:你吃吗?吃我就拉。我哥们赶紧说:1碗,您拉1碗就行了。据说,当时在饭馆的人都哈哈大笑~~

7.有次我妹妹给我介绍一支曲子,她说叫“少女的衬裤”,我心下诧异,拿过CD来一看,是“少女的祈祷”……

8.小学老师在公开课之前“抚慰”我们紧张的心情,说道:“大家不用紧张,到了课堂不要东张西望,台下坐的还不都是人,不都是长着两个鼻子,一个眼睛嘛!”

9.上英语课,老师:“goodmorning,teacher“学生:“goodmorning,student“全班皆倒……^_^

10.小时候冰棍雪糕的一般都是推着自行车叫卖,有一次,在屋子里听一阿姨喊:新来的雪糕,热乎的。(估计阿姨以前是卖油饼油条的)

11.我一个同学给另一个朋友打电话,对方的爷爷接的,那同学不知道在想什么,张嘴就是:“爷爷,我是奶奶……”突然觉得不对,哐一下就把电话挂了……

12.我和妹妹小时候在家玩,她假装一个侠女,很警觉地竖着耳朵听听外面,然后一脸警惕地跟我说:“哎?不对大头阿!”

13.单位同事看报纸,说,刘晓庆没结婚就生了个孩子,叫云云,我们赶忙拿着报纸找,不见。她走过来给我们指,一看,是“刘晓庆在那个年代,就曾说过很现代的言论,诸如一辈子单身,但不结婚也可以生个孩子云云。”

14、高数课,老师在黑板上奋笔疾书,底下闹成一片,老师忍无可忍:“同学们声音小一点!”一哥们曰:“老师,慢慢你就习惯啦!”老师faint!

15、高中全校必须穿校服有一复读的学生从来都不穿管这方面的老师天天蹲在门口检查一日老师看到此同学没穿校服问其为什么不穿。此同学大怒曰:我妈又没死为什么要穿孝服老师汗到死

16、这个也许不算接嘴:老师拖堂:“最后我还要讲一点……”一强男生接口大声道“强扭的瓜不甜!”,全场寂静……老师脸铁青:“……下课”

17、偶们老师一次上课时说:“老板就是老板着脸,老婆就是老婆婆妈妈.老伴就是老陪伴着你……”偶同桌大声问老师:“老师,那老师是不是就是底下老湿呀?”老师遂暴走!!

18、初中时下课喜欢几个男生一个扑蝴蝶(现在想想真无聊),结果一同学玩得太兴奋,上课铃响时,数学老师叫他几遍都没回答。上课5分钟后,此同学跑到门口喊报告,老师生气的说:“我就是喊一条狗,它都会摇尾巴啊!”此同学小声的接到:“我又没尾巴……”全班暴笑,连老师也忍不住了……

19、我的一个哥们儿在高数课上老师问:“微积分是很有用的学科,学习微积分,我们的目标是什么?”我哥们儿:“没有蛀牙!”

20、上语文课老师说:“其实黄鼠狼是不吃鸡的,那是科学家经过实验得出的。曾经把一只鸡和黄鼠狼关在一起,第二天你们猜怎么了?”同学接道:“鸡怀孕了。”

21、初中物理课讲到氖管的使用,我们班一个胖子坐在最后一排站起来问到:“老师氖管里面的奶要是流出来怎么办?”全班静,老师没有说话一直讲其他的到下课,第二天上课一开始该老师开始对昨天那位同学火冒三丈,全班于是对老师的反映速度有了解。

22、体育老师上课时吼:“向右转,不要乱瞟,用眼角的旁光扫着旁边的同学。”下面有人小声说:“只有他的膀胱才长在眼角上。”

23、高三,几何老师,一bt老太太,爱自吹,巨烦人。一日在课上:“我在市教育局都很受重视的,他们总是请我去一起研究问题,每次都是车接车送”(注:此老太南方人,说到这里故意有一停顿以加强语气)。我说:“三轮么?”结果:从此被禁止上几何课。

24、初中校领导开会,下面的同学很不自觉,扔了一地板的面巾纸(当天温度差不多50度。)开完会后,一名领导接着讲:同学们,今天满地都是卫生巾,本来就不干净的地板被弄得不成样了,男同学全部留下来收拾干净。女同学哭笑不得……

25、上摄影课,一同学拍到两小孩,在喷泉旁打闹,老师问:“这是什么画面啊?”下面传来一句话:“鸳鸯戏水。”众狂笑~~~~~

26、音乐课上,教师做音乐接龙,即前一个同学喝一个音调的“拉”,下一个同学要先重复前一个同学的“拉”,再唱出另一个音调的“拉”。有个男生无聊,在每个人的“拉”音后都加个字,什么“拉风”,“拉面”,“拉大便”之类,等到他用非常优美的音色唱出一个“拉”后,音乐老师笑咪咪的看着他说:“让我们看看你能拉什么。”

27、语文课上<<雁荡山>>老师:“以上各句说明它是很翘很陡很挺的同学是不是?!”众男生绝对大声回答:“是!!!”一女生突道:“那上它的时候安全吗?!“众人狂笑中这课就没完了!

28、我觉得,我们高中数学老师最经典。我班的一个女孩坐后排,在听随身听,耳朵堵着所以说话声很大,对她同桌说:老师过来告诉我一声。几乎所有同学都听到了。老师也不例外,看看那位同学,然后说:我不过去。

29、升旗仪式校长作思想报告:“我就是中国人民的儿子。”底下同学“我是中国人民”

PHP fsockopen 简单抓取网页内容

      这几天在做采集的东东,php提供了很多访问远程计算机内容的方法,文件系统的函数些都支持读取远程文件,而fsockopen是争对于socket接口的编程函数,在网上搜了一下发现用这个函数来读取http内容也比较多,但是没有一个比较完善和适合我的,在某个小偷程序上改改,轻而易举的完善fsockopen请求http协议内容,从而获取请求内容.代码如下:

function get_page_content($url){
 $url = eregi_replace(‘^http://’, ”, $url);
 $temp = explode(‘/’, $url);
 $host = array_shift($temp);
 $path = ‘/’.implode(‘/’, $temp);
 $temp = explode(‘:’, $host);
 $host = $temp[0];
 $port = isset($temp[1]) ? $temp[1] : 80;
 $fp = @fsockopen($host, $port, &$errno, &$errstr, 30);
 if ($fp){
   @fputs($fp, "GET $path HTTP/1.1\r\nHost: $host\r\nAccept: */*\r\nReferer:$url\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\nConnection: Close\r\n\r\n");
 }
 $Content = ”;
 while ($str = @fread($fp, 4096)){
   $Content .= $str;
 }
 @fclose($fp);
 //重定向
 if(preg_match("/^HTTP\/\d.\d 301 Moved Permanently/is",$Content)){
   if(preg_match("/Location:(.*?)\r\n/is",$Content,$murl)){
     return get_page_content($murl[1]);
   }
  }
 //读取内容
 if(preg_match("/^HTTP\/\d.\d 200 OK/is",$Content)){
   preg_match("/Content-Type:(.*?)\r\n/is",$Content,$murl);
   $contentType=trim($murl[1]);
    $Content=explode("\r\n\r\n",$Content,2);
   $Content=$Content[1];
 }
 return $Content;
}