有时候需要在web上执行一些特殊的终端命令。例如ps,为了在web上显示出当前的进程列表,因为我经常做一些系统方面的编程,所以有时候就不得不做这些高危险性的事情。用下边的方法就可以允许php用exec,system等函数来执行这些终端命令。
键入命令visudo,打开sudoers文件,编辑该文件
注释掉Defaults requiretty一行,并在文件末尾追加Apache ALL=NOPASSWD:/bin/ps
这样,在php中就可以用类似这样的语句去执行ps命令exec(”/usr/bin/sudo /bin/ps -e”); ,当然,ps的参数可以随意指定,和在终端下使用一样。需要注意的是这里使用的是apache服务器,不同的web服务器该方法应该不能混用。
不允许php来执行的命令有很多,比如chkconfig,想开启或关闭一个服务,这些只有root才能做的事情,普通用户都是没有权限的,跟何况要php去做。所以同样的会带来安全问题,总之慎用就好。
记之,与大家分享,以备后用。
转载自网络,来源不详,在此感谢原作者。
<?php
header(’Content-type: application/image/pjpeg’);//输出的类型
header(’Content-Disposition: attachment; filename=”downloaded.jpg”‘); //下载显示的名字,注意格式
readfile(’my.jpg’);
// 并将这个文件以前面header发送信息设定的类型输出,从而会弹出一个下载框
// 就是把服务器上的my.jpg下载下来,下载显示和保存的名字默认是downloaded.jpg
?> 附带文档类型及服务器响应类别
一共两个版本.
文档类型 和 服务器响应HTTP的类型
上面的这个可以在上传文件的类型中对应上.下面的差了点.(原文下面的是用来写在文件头上的.来确定该文件是什么类型.)
继续阅读
今天和同事讨论起怎么在PHP中实现多个客户端去修改和获得同一个服务端变量的问题,其实就是ASP中的application对象的作用了。
原来事情没有那么简单,PHP中没有提供类似application对象这样的方法,经过一番搜索,整理出网上常用的三种方法来实现。
其实都是很容易想得到的办法,存取文件,存取数据库,共享内存。若有其他方法欢迎告知。
网上还找到一个可以实现这个功能的类,没有测试,大概看了看,核心还是采用的存取文件的方法,所以就没有保存。
既然只能这样实现,就不多说了,有关共享内存可以搜索手册,手册中有详细的方法。搜索的关键词可以用shm,shmop_open,shmop_reade,shmop_write等。
整理之留备后用。
这段程序基本实现了小文件上传的各种控制操作,包括文件类型,文件大小(包括PHP post_max_size的设置和程序本身的限制),图片文件的尺寸,供大家参考,有问题欢迎指正。
<?php
function return_bytes($postsize) {
$a=trim(eregi_replace(”[^0-9]“,”",$postsize));
$a=$a*1024*1024;
return $a;
}
继续阅读
COMMENTS