PHP调用linux命令详细说明
/*
在php教程中调用linux命令的函数是
string exec(string command, string [array], int [return_var]);
如
exec( "vpopmail ");
echo exec('whoami');
再看一实例
function exec_enabled() {
$disabled = explode(', ', ini_get('disable_functions'));
return !in_array('exec', $disabled);
}
<?php
$tmp = exec("c:\Image\gm.exe convert c:\Image\file1.tiff c:\Image\file1.jpg", $results);
?>
还有一种命令是
php通过函数system()调用系统命令。
string system ( string $command [, int &$return_var ] )
实例
system('asterisk -vvvvvvvvvvvc');
system()是一样的函数C的,它执行给定的命令和输出结果的版本。该system()的调用也尝试自动刷新网页服务器的输出缓冲器在每个输出行如果PHP运行作为服务器模块。如果你需要执行一个命令,并已全部通过直接从背面没有任何干扰的命令数据,使用passthru()函数。
$last_line = system('ls', $retval);
function my_exec($cmd, $input='')
{$proc=proc_open($cmd, array(0=>array('pipe', 'r'), 1=>array('pipe', 'w'), 2=>array('pipe', 'w')), $pipes);
fwrite($pipes[0], $input);fclose($pipes[0]);
$stdout=stream_get_contents($pipes[1]);fclose($pipes[1]);
$stderr=stream_get_contents($pipes[2]);fclose($pipes[2]);
$rtn=proc_close($proc);
return array('stdout'=>$stdout,
'stderr'=>$stderr,
'return'=>$rtn
);
}
var_export(my_exec('echo -e $(</dev/stdin) | wc -l', 'h\nel\nlo'));
实例三
$cmd = "date";
$output = system($cmd);
printf("System Output: $output ");
exec($cmd, $results);
printf("Exec Output: {$results[0]} ");
php调用linux命令的权限问题
你可以使用定时任务执行你要调用的php,这时的权限就是root,
php通过函数system()调用系统命令
php一般是以apache用户身份去执行的,把apache加入到存储你文件的父文件夹属组里去,然后改该父文件夹权限为775,这样属组成员就有写的权限,而apache属于这个组就可以改写该目录下所有文件的权限,当然,属组最好不要是root,你可以为该文件夹改个其它普通用户组。
改apache/php的运行用户方法不安全
*/
function read($filename,$filesze)
{
$fp=fopen($filename,"rb");//用fopen rb 属性读取文件并用flock lock_sh,lock_un来解锁
if($fp)
{
flock($fp,LOCK_SH);
clearstatcache();
$filesize=filesize($filename);
if($filesize>0)
{
$data=fread($fp,$filesize);
}else
{
$data=false;
}
flock($fp,LOCK_UN);
fclose($fp);
return $data;
}else
{
return false;
}
}
/**
*用fopen写入文件
*@param string $filename
*@param string $contents
*@return boolean
*/
function wirte($filename,&$contents)
{
$fp=fopen($filename,"wb");
if($fp)
{
flock($fp,LOCK_EX);//同一时间锁定文件,只能一个人操作
fwrite($fp,$contents);
flock($fp,LOCK_UN);//保存数据握进行解锁文件并保存
fclose($fp);
return true;
}else
{
return false;
}
}
//应用 1读文件,2写文件
$body ='';
if( $a = 1 )
{
read('a.txt',1024);
}
else
{
wirte('a.txt',$body);
}
//输出文件
echo $body;
?>
<form name="form1" method="post" action="">
<label>
<input type="text" name="tp_nam">
</label>
<label>
<input type="submit" name="Submit" value="提交">
</label>
</form>
<?
//php mysql留言板代码
$tp_time = $other->shortTime();
if ($_POST['tp_nam'] != "") {
//-------添加开始-------------
$tp_name = $_POST['tp_nam'];
$tp_contents = $_POST['message'];
$at_id = $_POST['at_id'];
if (!isset($_POST['chkkd'])) {
exit();
}
if ($_POST['chkkd'] == $_SESSION['CodeNum']) {
$_SESSION['CodeNum'] = '';
$res = $tpEdit->tpInsert($tp_name, $tp_contents, $tp_time, $at_id, $col_id, 0, 0);
} else {
echo "<script> alert('验证码输入错误 ');window.location.href='www.111cn.net';</script>";
}
//-----------添加结束-----------
if ($res == 1) {
echo "<script>alert('操作成功!');window.close();</script>";
exit();
} else {
echo "<script>alert('请勿重复发帖,五分钟后再来!');window.close();</script>";
}
}
?>
/*
js验证
<script type="text/javascript教程">
var dnum=document.getElementById("fenshu");
dnum.onkeyup = function(){
this.value=this.value.replace(/D/g,'');
if(dnum.value>1000||dnum.value<100){
dnum.value=100;
}
}
</script>
*/
//php教程验证
$var=300;
$int_options = array(
"options"=>array
(
"min_range"=>0,
"max_range"=>256
)
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
//方法三js
var reg = /d{2,3}/;
var s = 888;
alert(reg.test(s));
//php正则
^([1-9][0-9][0-9]|1000)$
/*
这里我们主要是用到了正则表达式来完成,验证数字是否在指定的数据间距之间。
*/
?>
// 原是是根据用户输入的数字判断再转换成想要的大写数字,如果我们先把大小写存在一个数组,再判断进行转换就OK了。
$data = $_POST['rmb'];
if (!ereg("^[0-9.]",$data) ) die('请输入数值!');
$arr = array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
$arr2 = array(0=>'',1=>'十',2=>'百',3=>'千',4=>'万',5=>'十',6=>'百',7=>'千',8=>'亿',9=>'十',10=>'百',11=>'千');
$len1 = strlen($int);//判断位数
$arrlen = array();
for($i=1;$i<=$len1;$i++){
$sublen = substr($int, $i-1,1);
$arra['value'] = $sublen;
$arra['len'] = $len1 - $i+1;
array_push($arrlen, $arra);
}
for($j=0;$j<=$len1;$j++){
$va = $arrlen[$j]['value'];//RMB 数值
$valen = $arrlen[$j]['len'];//长度 确定单位
switch ($vc == $va)
{
case 0: echo $arr[0];break;case 1: echo $arr[1];break;
case 2: echo $arr[2];break;case 3: echo $arr[3];break;
case 4: echo $arr[4];break;case 5: echo $arr[5];break;
case 6: echo $arr[6];break;case 7: echo $arr[7];break;
case 8: echo $arr[8];break;case 9: echo $arr[9];break;
}
?>
<form id="form1" name="form1" method="post" action="">
<input type="text" name="rmb" id="rmb" />
<input type="submit" name="button" id="button" value="转换" />
</form>
相关文章
- 这篇文章主要介绍了Spring AOP 对象内部方法间的嵌套调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-29
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 这篇文章主要介绍了c# 三种方法调用WebService接口的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
- MySQL日志主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句...2015-11-24
使用percona-toolkit操作MySQL的实用命令小结
1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24- 这篇文章主要介绍了解决Vue watch里调用方法的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
- grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令,这篇文章主要介绍了Linux中grep详解,需要的朋友可以参考下...2023-02-15
- 这篇文章主要给大家介绍了关于c#中的WebService及其调用方式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了C#隐式运行CMD命令(隐藏命令窗口),本文实现在winform窗口中运行CMD命令,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了js实现调用网络摄像头及常见错误处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-07
- 这篇文章主要介绍了解决vue watch数据的方法被调用了两次的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
- 本文实例讲述了PHP实现连接设备、通讯和发送命令的方法。分享给大家供大家参考。具体如下:开发的BS架构的软件(PHP),需要跟设备进行通讯,在此记录一下,欢迎各位指正:1. 采用php socket技术使用TCP/IP连接设备参数$service_po...2015-10-21
- 这篇文章介绍了c#动态调用Webservice的两种方法实例,有需要的朋友可以参考一下...2020-06-25
- 下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 一、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql/bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密...2015-11-08
- 这篇文章主要介绍了javascript实现方法调用与方法触发小结的相关资料,需要的朋友可以参考下...2016-03-30
- 本文章来给大家详细介绍在php中如何来调用执行mysql存储过程然后返回由存储过程返回的值了,有需要了解的同学可进入参考。 。调用存储过程的方法。 a。如果存储过...2016-11-25
- 这篇文章主要介绍了解决jmap命令打印JVM堆信息异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-04
- 下面是我们经常会用到且非常有用的MySQL命令。下面你看到#表示在Unix命令行下执行命令,看到mysql>表示当前已经登录MySQL服务器,是在mysql客户端执行mysql命令。 登录MySQL,如果连接远程数据库,需要用-h指定hostname。登...2015-11-24
- 我们要明确,为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了...2020-06-25