首页
关于
友情链接
文章归档
Search
1
centos 32位 64位 下挂vagex一键包代码
718 阅读
2
wordpress转typecho方法
615 阅读
3
一个自制的virto精简版kvm qemu win2003模板 最低64M内存可用
605 阅读
4
PHP 安装
539 阅读
5
暴雨 车被泡了~
478 阅读
默认分类
vps综合利用
登录
/
注册
Search
标签搜索
Uncategorized
安装
mysql
utf-8
网站
google
linux
free
免费
黑色
ssl
一键包
优化
40%
press
vagex
32位
64位
debian
domain
御品VPS
累计撰写
501
篇文章
累计收到
1
条评论
首页
栏目
默认分类
vps综合利用
页面
关于
友情链接
文章归档
搜索到
21
篇与
御品VPS,独特的心情尽在御品VPS,VPS教程,VPS优惠,网络编程,PHP教程,PYthon教程,VPS综合利用,修身养性,修炼功法
的结果
2017-04-19
Linux入门学习教程:虚拟机体验之KVM篇
在上一篇中,我展示了虚拟机软件QEMU的使用、效果及其性能,同时也分析了不同用户对虚拟机的不同追求。但是不管是桌面用户还是企业级用户,对虚拟机软件的追求有一点是共同的,那就是性能。QEMU是一个强大的虚拟机软件,它可以完全以软件的形式模拟出一台完整的电脑所需的所有硬件,甚至是模拟出不同架构的硬件,在这些虚拟的硬件之上,可以安装完整的操作系统。QEMU的运行模式如下图:很显然,这种完全以软件模拟硬件的形式虽然功能强大,但是性能难以满足用户的需要。模拟出的硬件的性能和物理硬件的性能相比,必然会大打折扣。为了提高虚拟机软件的性能,开发者们各显神通。其中,最常用的办法就是在主操作系统中通过内核模块开一个洞,通过这个洞将虚拟机中的操作直接映射到物理硬件上,从而提高虚拟机中运行的操作系统的性能。如下图:其中KVM就是这种加速模式的典型代表。在社区中,大家常把KVM和Xen相提并论,但是它们其实完全不一样。从上图可以看出,使用内核模块加速这种模式,主操作系统仍然占主导地位,内核模块只是在主操作系统中开一个洞,用来连接虚拟机和物理硬件,给虚拟机加速,但是虚拟机中的客户操作系统仍然受到很大的限制。这种模式比较适合桌面用户使用,主操作系统仍然是他们的主战场,不管是办公还是打游戏,都通过主操作系统完成,客户操作系统只是按需使用。至于Xen,则完全使用不同的理念,比较适合企业级用户使用,桌面用户就不要轻易去碰了,具体内容下一篇我再讲。其实VirtualBox也是采取的这种内核模块加速的模式。我之所以这么说,是因为在安装VirtualBox时,它会要求安装DKMS。如下图:熟悉Linux的人知道,DKMS就是为了方便用户管理内核模块而存在的,不熟悉DKMS的人Google一下也可以了解个大概。关于VirtualBox的具体使用方面的内容,我下一篇再讲。这一篇主要讲KVM。KVM和QEMU是相辅相成的,QEMU可以使用KVM内核模块加速,而KVM需要使用QEMU运行虚拟机。从上图可以看到,如果要使用Ubuntu的包管理软件安装KVM,其实安装的就是qemu-kvm。而qemu-kvm并不是一个什么很复杂的软件包,它只包含很少量几个文件,如下图:用man命令查看一下它的文档,发现qemu-kvm包不仅包含的文件很少,而且它的可执行文件kvm也只是对qemu-system-x86_64命令的一个简单包装,如下图:那么问题来了,kvm内核模块究竟是由哪个包提供的呢?其实,自从Linux 2.6开始,kvm就已经被加入内核了。如果非要找出kvm内核模块kvm.ko是由哪个包提供的,可以用如下命令考察一下:写到这里,已经可以看出KVM的使用是很简单的了。下面,我使用KVM运行一下上一篇中安装的WinXP操作系统,体验一下QEMU经过KVM加速后的运行效率。使用如下命令运行使用KVM加速的QEMU:可以看出,使用KVM加速后,虚拟机中的WinXP运行速度提升了不少,开机只用了34秒。我将分辨率调整为1366*768,图形界面运行也很流畅,不管是打开IE浏览器还是Office办公软件都没有问题,再也没有出现CPU使用率飙升到100%的情况。如果用 ps -ef | grep qemu 命令查看一下,发现kvm命令运行的还是qemu-system-x86_64程序,只不过加上了-enable-kvm参数,如下图:另外,对于桌面用户来说,有一个好用的图形化界面也是很重要的。虽然QEMU和KVM自身不带图形界面的虚拟机管理器,但是我们可以使用第3方软件,比如virt-manager。只需要使用 sudo apt-get install virt-manager 即可安装该软件。该软件依赖于libvirt,在安装过程中也会自动安装。运行virt-manager的效果如下图,注意必须使用sudo运行,因为该软件需要超级用户权限:该软件可自动识别系统中的虚拟机环境是QEMU+KVM还是Xen。新建一个虚拟机,由于之前安装过一个WinXP系统,所以选择导入现有硬盘镜像。点下一步后,出现如下界面:这一步没什么好说的,再点下一步,如下图:这里可以设置网络选项。如果勾选“在安装前自定义配置”的话,还可以对硬件进行进一步的自定义,如下图:在上图中,我们可以看到虚拟机支持的所有虚拟显卡的类型,在这里,我当然选择的是VMVGA,因为我以前经常用VMWare,知道这些操作系统在VMWare的虚拟显卡设置下运行得都没有问题。当然,其它的选项都可以试一下,不过在虚拟的操作系统中需要安装相应的驱动程序。最后,虚拟机运行的效果图如下:可以看到,该程序提供的界面有非常丰富的功能菜单,功能是非常强大的,甚至可以向虚拟机中的操作系统发送组合按键。可以这么说,如果没有VirtualBox的话,QEMU+KVM的组合应该是桌面用户的首选。下一篇我将尝试VirtualBox,VirtualBox号称是最强大的开源虚拟机系统,具体见 Linux入门学习教程:虚拟机体验之VirtualBox篇 http://www.linuxidc.com/Linux/2015-03/114463.htm 。--------------------------------------分割线 --------------------------------------RHEL6 KVM虚拟化创建桥接网卡-网桥 http://www.linuxidc.com/Linux/2013-08/88517.htmRedHat Linux KVM虚拟机桥接 http://www.linuxidc.com/Linux/2013-02/79934.htmCentOS 5.6下KVM的安装/桥接设置/虚拟机创建及运行 http://www.linuxidc.com/Linux/2012-12/76883.htmUbuntu下用libvirt安装KVM虚拟机时找不到/bin/qemu-kvm问题解决 http://www.linuxidc.com/Linux/2013-08/88985.htmRedHat6.5下安装配置KVM虚拟机 http://www.linuxidc.com/Linux/2014-10/107972.htm--------------------------------------分割线 --------------------------------------本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-03/114462.htm
2017年04月19日
156 阅读
0 评论
0 点赞
2017-04-19
Linux入门学习教程:虚拟机体验之QEMU篇
说起虚拟机,大家都不陌生。需要使用虚拟机的场景也非常的多,比如有志于写操作系统的同志,往往需要一个虚拟机来运行和调试他写的系统;再比如喜欢研究网络体系结构的朋友,需要在自己的电脑上虚拟出N个系统组成各种各样的网络。(这个需要电脑的配置够强大才行,幸好本人的电脑够。)还比如用Windows的想玩Linux,用Linux想玩Windows,这样用虚拟机玩起来也比较方便;最后比如有人想研究一下目前最流行的大数据啊、云计算啊,想试一试Hadoop、Spark、OpenStack什么的,没有虚拟机怎么搭建实验环境。我自己也经常用虚拟机,在Windows中用的是VMWare,感觉它功能强大、使用方便,运行效率也非常的高。我的博客中有不少内容都是在虚拟机中折腾出来的,你们能分得出来吗?在Linux系统下,我也用虚拟机。比如在我的这一篇《使用GCC和GNU Binutils编写能在x86实模式运行的16位代码》中,我就使用QEMU来运行一个FreeDOS系统,用来调试我的16位代码。其实我自己也是一个喜欢研究操作系统的主,结识QEMU就是从《自己动手写操作系统》这本书开始的。虚拟机的分类很复杂。什么全虚拟、半虚拟什么的搞得人头晕。我用过的虚拟机也不少了,也总是分不清这些概念。而且桌面用户和企业级用户对虚拟机的期望值是不一样的。比如说,我可能期望这样一个虚拟机:1.它能模拟出一台完整的个人电脑,我可以给它安装任何我想安装的操作系统;2.它要有比较好用的图形界面,模拟出的电脑也要能无障碍运行Windows或Gnome这样的图形系统,能打游戏最好;3.客户操作系统所用的硬盘就是宿主操作系统中的一个镜像文件,随时可复制粘贴,随时可打包带走;4.最好能模拟出一些本身不存在的硬件,比如多个网卡什么的。很显然,VMWare Workstation就是这样一个可以完美满足我要求的桌面用户最满意的虚拟机。我经常使用它来折腾各个Linux发行版,而且运行流畅。当然,在Linux这个开源的世界我们是不该去使用破解版这样的东西的。不过不用担心,在Linux江湖中,还有VirtualBox、QEMU这样的虚拟机软件可用。而企业级用户呢,他们期望的虚拟机可能是这样的:1.它不一定要能模拟出一台完整的电脑,重点是CPU、内存、磁盘和网卡,重点是能当服务器使用;2.它性能一定要好,虚拟的CPU性能一定要接近物理CPU,一定要充分利用物理CPU的所有特性,为了性能,甚至只能安装经过修改过内核的操作系统;(所谓的半虚拟化技术。)3.它隔离性一定要好,它的目的是把一台机器分成N台机器用,而管理这N台虚拟机的宿主机要越不占用资源越好,客户机是主,宿主机是次;(正如Xen这样。)4.由于企业级用户对性能的追求,所以客户机所用的硬盘可能真是一个独立的物理硬盘、磁盘阵列、网络文件系统什么的,而不仅仅只是宿主机上的一个镜像文件;5.它不一定需要有图形界面,因为使用命令行界面更容易管理,比如自动化啊、远程化啊、批量化啊什么的;6.更多的企业级高可用性需求,比如什么热备份啊、动态迁移啊什么的。从上面这些期望值可以看出,虚拟机领域水很深,市场前景也比较广阔。各个虚拟机厂家把自家产品吹得天花乱坠那也是很常见的,因为每一个用户期望的点都可以大做文章嘛。所谓临渊羡鱼,不如退而结网,各种虚拟机看得再过瘾,也不如自己尝试一下。今天我介绍的是QEMU。还是老规矩,我的博文并不是该软件的使用手册,所以,它的学习资料还请参考QEMU的官网:http://wiki.qemu.org/Main_Page或者,在自己的系统中输入如下命令:man qemu-system-i386man qemu-img等等...QEMU本身是一个非常强大的虚拟机,甚至在Xen、KVM这些虚拟机产品中都少不了QEMU的身影。在QEMU的官方文档中也提到,QEMU可以利用Xen、KVM等技术来加速。为什么需要加速呢,那是因为如果单纯使用QEMU的时候,它自己模拟出了一个完整的个人电脑,它里面的CPU啊什么的都是模拟出来的,它甚至可以模拟不同架构的CPU,比如说在使用Intel X86的CPU的电脑中模拟出一个ARM的电脑或MIPS的电脑,这样模拟出的CPU的运行速度肯定赶不上物理CPU。使用加速以后呢,可以把客户操作系统的CPU指令直接转发到物理CPU,自然运行效率大增。QEMU同时也是一个非常简单的虚拟机,给它一个硬盘镜像就可以启动一个虚拟机,如果想定制这个虚拟机的配置,比如用什么样的CPU啊、什么样的显卡啊、什么样的网络配置啊,指定相应的命令行参数就可以了。它支持许多格式的磁盘镜像,包括VirtualBox创建的磁盘镜像文件。它同时也提供一个创建和管理磁盘镜像的工具qemu-img。QEMU及其工具所使用的命令行参数,直接查看其文档即可。下面开始体验。先看看Ubuntu软件源中和QEMU有关的包有哪些:我的电脑是Intel的CPU,而我想虚拟的也是个人电脑,所以我安装的自然是qemu-system-x86,另外一个有用的是qemu-utils。查看QEMU软件包中的工具及文档:使用qemu-img创建磁盘映像文件,使用qemu-system-i386启动虚拟机,并安装操作系统:WinXP估计是目前全网络上最好下载的操作系统了。运行以上命令后,弹出熟悉的系统安装界面。安装过程我就不啰嗦了。下图是安装完WinXP操作系统之后的效果。可以给qemu-system-i386指定更多的参数,在再一次启动WinXP的时候,我除了给它分配了2G内存,我还使用-smp 2参数为它分配了两个CPU,还使用-vga vmware为它指定和VMWare虚拟显卡一样的显卡。虽然指定两个CPU,但是性能仍较差。随便拖动一下窗口CPU使用率就飙升到100%。而且从上图中可以看到,虚拟机中的CPU虽然显示为3.5GHz,但是很显然是QEMU模拟出来的,和物理CPU有显著差别。事实上我的电脑配置相当强悍,Core i7-4770K的四核八线程CPU,请看lshw的输出结果:结论:Intel Core i7-4770K的CPU,虚拟出的XP也分配了2G的内存和两个CPU,但是流畅度仍较差。说明单纯使用QEMU还是不能满足我们桌面用户的需要。配合Xen或者KVM呢?性能是否会有质的飞跃?敬请期待下篇《Linux入门学习教程:虚拟机体验之KVM篇》,见 http://www.linuxidc.com/Linux/2015-03/114462.htm。Ubuntu 12.04之找不到Qemu命令 http://www.linuxidc.com/Linux/2012-11/73419.htmArch Linux上安装QEMU+EFI BIOS http://www.linuxidc.com/Linux/2013-02/79560.htmQEMU的翻译框架及调试工具 http://www.linuxidc.com/Linux/2012-09/71211.htmQEMU 代码分析:BIOS 的加载过程 http://www.linuxidc.com/Linux/2014-12/110472.htmQEMU 的详细介绍:请点这里QEMU 的下载地址:请点这里
2017年04月19日
148 阅读
0 评论
0 点赞
2017-04-19
又一个开小鸡技术-Linux 容器工具 LXC
又一个开小鸡技术-Linux 容器工具 LXC LXC 项目由一个 Linux 内核补丁和一些 userspace 工具组成。这些 userspace 工具使用由补丁增加的内核新特性,提供一套简化的工具来维护容器。 容器可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。本文循序渐进地介绍容器工具 Linux Containers(LXC)。 容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模 拟,也不需要即时编译。容器可以在核心 CPU 本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。 通 过提供一种创建和进入容器的方式,操作系统让应用程序就像在独立的机器上运行一样,但又能共享很多底层的资源。例如,可以有效地共享公共文件(比如 glibc)的页缓存,因为所有容器都使用相同的内核,而且所有容器还常常共享相同的 libc 库(取决于容器配置)。这种共享常常可以扩展到目录中其他不需要写入内容的文件。 容器在提供隔离的同时,还通过共享这些资源节省开销,这意味着容器比真正的虚拟化的开销要小得多。 容 器技术早就出现。例如,Solaris Zones 和 BSD jails 就是非 Linux 操作系统上的容器。用于 Linux 的容器技术也有丰富的遗产,例如 Linux-Vserver、OpenVZ 和 FreeVPS。虽然这些技术都已经成熟,但是这些解决方案还没有将它们的容器支持集成到主流 Linux 内核。 使用 Docker/LXC 迅速启动一个桌面系统 http://www.linuxidc.com/Linux/2014-08/105652.htm Linux容器技术-LXC相关技术知识介绍 http://www.linuxidc.com/Linux/2012-07/66523.htm Linux容器技术-LXC创建虚拟机的执行过程分析 http://www.linuxidc.com/Linux/2012-07/66522.htm 利用shell脚本监控LXC应用容器内的应用 http://www.linuxidc.com/Linux/2012-07/64525.htm Cgroup和LXC(Linux container)安装详解(CentOS 6.2) 系统 http://www.linuxidc.com/Linux/2012-02/55420.htm Linux容器虚拟技术LXC简明手册 http://www.linuxidc.com/Linux/2011-06/37349.htm LXC官方首页 LXC下载地址 又一个开小鸡技术-Linux 容器工具 LXC
2017年04月19日
134 阅读
0 评论
0 点赞
2017-04-14
一个在线打包备份并下载的代码zip
显示文件 /zip.php <?phpinclude ("seess.php");include ("config.php");$dirname=$u_user;if ( !IsSet($_GET['dirname']) ){ show_input_form() ;}else{ // check if empty if ( empty($_GET['dirname']) ) { hg_exit("请输入用户名!") ; } // check valid dirname if ( FALSE !== strpos($_GET['dirname'], "/") ) { hg_exit("\"/\" 是非法的文件夹名!") ; } if ( FALSE !== strstr($_GET['dirname'], "..") ) { hg_exit("\"..\" 是非法的文件夹名!") ; } // check valid dir if ( !is_dir($_GET['dirname']) ) { hg_exit("\"{$_GET['dirname']}\" 不是一个有效的文件夹!") ; } $szData = "" ; $szInfo = "" ; $file_count = @ZipDir($_GET['dirname'], &$szData, &$szInfo) ; $info_size_16byte = @sprintf("%016d", @strlen($szInfo)) ; $szData = @sprintf("%016d",$file_count) . $info_size_16byte . $szInfo . $szData ; $filename = $_GET['dirname'] . ".dat" ; if ( function_exists(gzencode) ) { $szData = gzencode($szData) ; $filename .= ".gz" ; } Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes"); Header("Accept-Length: " . strlen($szData)); Header("Content-Disposition: attachment; filename=$filename"); echo $szData ;}function show_input_form(){ echo HtmlHead("文件打包") ; echo "<form name=\"input\">\n" . "请输入要打包的文件夹,注意,仅当前目录下的文件夹才可以下载!<p>\n" . "<input name=\"dirname\">\n" . "<input type=\"button\" value=\"确定\" onClick=\"show_download_link(dirname.value);\">\n" . "</form>\n" ; echo "<script>\n" . "input.dirname.focus();\n" . "function show_download_link(dir)\n" . "{" . " var top = (screen.height-200)/2 ;\n" . " var left = (screen.width-300)/2 ;\n" . " newwin=window.open('', '', 'width=300,height=200,top=' + top + ',left=' + left + ', resizable=0,scrollbars=auto');\n" . " url = \"{$_SERVER['PHP_SELF']}\" + \"?dirname=\" + dir ;\n" . " newwin.document.write('<a href=' + url + '>点击此链接下载,<br>或者右键点击此处选择\"另存为\"</a>');\n" . "}" . "</script>\n" ; echo HtmlFoot() ;}function ZipDir($szDirName, &$szData, &$szInfo){ // write dir header $szInfo .= "$szDirName|[dir]\n" ; $file_count = 0 ; $hDir = OpenDir($szDirName) ; while ( $file = ReadDir($hDir) ) { if ( $file=="." || $file==".." ) continue ; $szCurFile = "$szDirName/$file" ; if ( Is_Dir($szCurFile) ) { $file_count += ZipDir($szCurFile, &$szData, &$szInfo) ; } else if ( Is_File($szCurFile) ) { $hCurFile = fopen($szCurFile, "rb") ; $size = filesize($szCurFile) ; $szStream = fread( $hCurFile, $size ) ; fclose($hCurFile) ; $file_count++ ; // write info $szInfo .= "$szCurFile|$size\n" ; // write data $szData .= $szStream ; } } // write dir footer $szInfo .= "$szDirName|[/dir]\n" ; return $file_count ;}function hg_exit($str){ echo HtmlHead("Error, exit!") ; echo "<h5>" . $str . "</h5>" ; echo HtmlFoot() ; exit ;}function HtmlHead($title){ return "<html>\n\n<head>\n" . "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\n" . "<style type=\"text/css\">\n" . "body,input,td{font:12px verdana}\n" . "</style>\n" . "</head>\n\n<body>\n\n" ;}function HtmlFoot(){ return Copyright() . "\n</body>\n\n</html>" ;}function Copyright(){ return "<center><font size=\"5\" face=\"楷体_GB2312\" color=\"red\">使用完请立即删除本窗口并退出登录,以避免被其它人发现使用!</font></center>\n" . "<br><hr color=\"#003388\">\n" . "</body>\n" . "\n" . "</html>" ;}?> 一个在线打包备份并下载的代码zip
2017年04月14日
194 阅读
0 评论
0 点赞
2017-04-14
一个在线上传并解压的代码unzip
显示文件 /unzip.php <?phpinclude ("config.inc.php");$basedir = realpath($db); HtmlHead("选择解压文件:") ;if ( !IsSet($HTTP_POST_VARS['submit']) ){ TestWriteable() ; $gzip_info = "" ; echo "check zlib support... " ; if ( !function_exists("gzopen") ) { $gzip_info = "<font color=\"red\">注意! 您的空间没有zlib支持,因此用phpZip压缩文件时,不要选择“压缩成Gzip格式”,否则将无法正确解压!</font>" ; } else { $gzip_info = "<font color=\"blue\">恭喜! 您的空间支持zlib压缩,强烈建议用phpzip压缩文件时,选中“压缩成Gzip格式”,将会大大减少文件大小!</font>" ; } echo " ----------------- OK!<br>\n" . $gzip_info ; echo "<br><br><br><br><form action=\"{$_SERVER["PHP_SELF"]}\" method=\"post\" enctype=\"multipart/form-data\"><table align=\"center\" width=\"450\"><tr><td height=\"20\" colspan=\"2\">请先选择压缩文件的位置,然后点击“确定”按钮: <p></td></tr><tr><td><input type=\"radio\" name=\"file_type\" value=\"upload\" checked onclick=\"this.form.upload_file.disabled=false; this.form.server_filename.disabled=true\">文件从本地上传: </td> <td><input name=\"upload_file\" type=\"file\" style=\"color:#0000ff\"></td></tr><tr><td colspan=2 height=10></td></tr><tr><td><input type=\"radio\" name=\"file_type\" value=\"server\" onclick=\"this.form.upload_file.disabled=true; this.form.server_filename.disabled=false\">指定服务器上文件:</td><td><input name=\"server_filename\" value=\"data.dat.gz\" style=\"color:#0000ff\" disabled >(可以用\".\"表示当前目录)</td></tr><tr><td colspan=\"2\" align=center><br><input type=\"submit\" name=\"submit\" value=\"确定\"></td></tr></table></form>" ; HtmlFoot() ; exit ;}if ( $_POST['file_type'] == 'upload' ){ $tmpfile = $_FILES['upload_file']['tmp_name'] ;}else{ $tmpfile = $_POST['server_filename'] ;}if ( !$tmpfile ){ exit("无效的文件或文件不存在,可能原因有文件大小太大,上传失败或没有指定服务器端文件等") ; }$bgzExist = FALSE ;if ( function_exists("gzopen") ){ $bgzExist = TRUE ;}$alldata = "" ;$pos = 0 ;$gzp = $bgzExist ? @gzopen($tmpfile, "rb") : @fopen($tmpfile, "rb") ;$szReaded = "has" ;while ( $szReaded ){ $szReaded = $bgzExist ? @gzread($gzp, 2*1024*1024) : @fread($gzp, 2*1024*1024) ; $alldata .= $szReaded ;}$bgzExist ? @gzclose($gzp) : @fclose($gzp) ;$nFileCount = substr($alldata, $pos, 16) ;$pos += 16 ;$size = substr($alldata, $pos, 16) ;$pos += 16 ;$info = substr($alldata, $pos, $size-1) ; // strip the last '\n'$pos += $size ;$info_array = explode("\n", $info) ;$c_file = 0 ;$c_dir = 0 ;foreach ($info_array as $str_row){ list($filename, $attr) = explode("|", $str_row); if ( substr($attr,0,6) == "[/dir]" ) { echo "End of dir $filename<br>"; continue; } if ( substr($attr,0,5)=="[dir]" ) { if ( @mkdir($basedir.'/'.$filename, 0777) ) echo "Make dir $filename<br>"; $c_dir++ ; } else { $fp = @fopen($basedir.'/'.$filename, "wb") or exit("不能新建文件 $filename ,因为没有写权限,请修改权限"); @fwrite($fp, substr($alldata, $pos, $attr) ); $pos += $attr ; fclose($fp); echo "Create file $filename<br>"; $c_file++ ; }}if ( $_POST['file_type'] == 'upload' ){ if ( @unlink($tmpfile) ) echo "删除临时文件 $tmpfile...<br>" ;}echo "<h1>操作完毕! 共解出文件 $c_file 个, 文件夹 $c_dir 个,谢谢使用!</h1><p>" ;HtmlFoot() ;function TestWriteable(){ $safemode = '新建一文件,命名为 unzip2.php (或其它名字), 其内容如下:<?phpcopy("unzip.php", "unzip_safe.php") ;header("location:unzip_safe.php") ;?>将这个文件上传到服务器,与unzip.php同一个目录下,运行 unzip2.php 这个程序。如果还是不行的话,那就是空间实在不支持,没有办法,很对不住您,浪费您的时间. ' ; echo "check PHP version... " . phpversion() . " -------- OK!<br>\n" ; echo "testing Permission... " ; $fp = @fopen("phpzip.test", "wb") ; if ( FALSE !== $fp ) { fclose($fp) ; @unlink("phpzip.test") ; } else { exit("当前目录没有写的权限,请将当前目录属性修改为:777\n") ; } $dir = "phpziptest" ; $file = "$dir/test.txt.php" ; @mkdir($dir, 0777) ; $fp = @fopen($file, "wb") ; if ( FALSE === $fp ) { @rmdir($dir) ; exit ("没有权限在程序创建的文件夹下创建文件 ,很可能是PHP安全模式所致,解决方法如下:<p><center><textarea cols=110 rows=15>$safemode</textarea></center>") ; } @fclose($fp) ; @unlink($file) ; @rmdir($dir) ; echo " ----------------- OK!<br>\n" ;}function HtmlHead($title="", $css_file=""){ echo "<html>\n" . "\n" . "<head>\n" . "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\n" . "<title>$title</title>\n" . "<style type=\"text/css\">\n" . "body,pre,td {font-size:12px; background-color:#fcfcfc; font-family:Tahoma,verdana,Arial}\n" . "input,textarea{font-size:12px; background-color:#f0f0f0; font-family:Tahoma,verdana,Arial}\n" . "</style>\n" . "</head>\n" . "\n" . "<body>\n" ;}function HtmlFoot(){ echo "<center><font size=\"5\" face=\"楷体_GB2312\" color=\"red\">使用完请立即关闭本窗口并退出登录,以避免被其它人发现使用!</font></center>\n" . "<br><hr color=\"#003388\">\n" . "</body>\n" . "\n" . "</html>" ;}?>
2017年04月14日
115 阅读
0 评论
1 点赞
1
2
...
5