php执行系统命令
❶ php eval怎样执行系统命令
eval — 把字符串作为PHP代码执行
说明
mixedeval( string $code_str )
把字符串code_str作为PHP代码执行。 除了其他,该函数能够执行储存于数据库文本字段内的PHP代码。
使用eval()时需注意几个因素:注意字符必须是有效的PHP代码,包括结尾的分号,以不至于解释器在eval()之后退出。并且正确地转义code_str中的东西。你可以使用一个PHP闭合标签来混合输出HTML和PHP代码。
同时需注意eval中的变量会被保留在之后的主脚本中。
参数
code_str需要被执行的字符串code_str不能包含 PHP Opening tags。
return语句会立即中止当前字符串的执行。
返回值
eval()返回NULL,除非在执行的代码中return了一个值,函数返回该值。 如果在执行的代码中有一个解析错误,eval()返回FALSE,之后的代码将正常执行。无法使用 set_error_handler() 捕获eval()中的解析错误。
范例
Example #1eval()例子 - 简单的文本合并
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>
以上例程会输出:
This is a $string with my $name in it.This is a cup with my coffee in it.
Note: 因为是一个语言构造器而不是一个函数,不能被 可变函数 调用。
Tip和直接将结果输出到浏览器一样,可使用输出控制函数来捕获当前函数的输出,然后(例如)保存到一个 string 中。
Note:
如果在执行的代码中产生了一个致命的错误(fatal error),整个脚本会退出。
linux 中
shell中的eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。
例如
$:cat ext
count=3
cmd=echo
cmd="$cmd \$$count"
ext 11 22 33
此时cmd=" echo $3"
eval $cmd 等价于 "echo 33 "
❷ 如何通过PHP执行linux命令
我使用的意思是想通过php代码做的更好对任意那么的目录可读可写可卸载,可以执行kill pid等的命令。
当然还存在还存在的做法,这是我使用的猜测,您不妨试看看,
1、把php的运行网民改为root,这种可能会存在必须的风险。
2、在apache里面指定可以对某个root权限的文件或目录做操作,该做法没试验过。可能您能试验成功的话,希望反馈一下哦。
求助者:恩,第一种做法,我使用的想过,可就是我是想参考我集团的思路来,所以这种做法没尝试过。因为它存在安全疑问。
第二个做法,应该可以,可就是太局限性了。要是文件多咋办,还存在我要想执行个kill,services restart等,肯定就不行了。
大家集团貌似是,写了个linux命令,和您们的思路貌似是一样的回者答:这是大家的做法:用VC写个服务,该服务的运行身份是root,也可以给其最大权限,php调用这个服务做操作。 该做法可行,只是就得多一种底层语言。
还存在的做法经测试:
第一种做法,成功。
我使用的项目用是VC写的服务。
第一种做法,可以改变PHP的运行身份,SuexecUserGroup指定CGI程序运行时所使用的网民和组。非CGI程序的请求仍然使用User指令所指定的网民身份处理。该指令取代了Apache的VirtualHosts配置中的User和Group指令。建议您看下类似的文档,个人做调试。好像还存在别的做法哦。好像是用super。这种您得个人摸索。我只提供思路哦`` 哈哈`` 谢谢``
❸ php如何执行linux的curl指令
curl 不是即时的输入输出的命令,php 有运行时间限制, curl 运行会导致 curl 运行时间不够而被杀掉的。
php 有运行 linux 命令的函数,记得 system() 是一个,之后还有另外一个。注意这两个命令是可以在 php.ini/php.conf 里面设置禁止使用的。
❹ PHP怎么调用Linux命令终端
首先先要给大家介绍PHP执行linux系统命令的几个基本函数。
system函数
说明:执行外部程序并显示输出资料。
语法:string system(string command, int [return_var]);
返回值: 字符串
详细介绍:
本函数就像是 C 语中的函数 system(),用来执行指令,并输出结果。若是 return_var 参数存在,则执行 command 之后的状态会填入 return_var 中。同样值得注意的是若需要处理用户输入的资料,而又要防止用户耍花招破解系统,则可以使用 EscapeShellCmd()。若 PHP 以模块式的执行,本函数会在每一行输出后自动更新 Web 服务器的输出缓冲暂存区。若需要完整的返回字符串,且不想经过不必要的其它中间的输出界面,可以使用 PassThru()。
实例代码:
< ?php
$last_line = system('ls', $retval);
echo 'Last line of the output: ' . $last_line;
echo '<hr/>Return value: ' . $retval;
?>
exec函数
说明:执行外部程序。
语法:string exec(string command, string [array], int [return_var]);
返回值: 字符串
详细介绍:
本函数执行输入 command 的外部程序或外部指令。它的返回字符串只是外部程序执行后返回的最后一行;若需要完整的返回字符串,可以使用 PassThru() 这个函数。
要是参数 array 存在,command 会将 array 加到参数中执行,若不欲 array 被处理,可以在执行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二个参数都存在,则执行 command 之后的状态会填入 return_var 中。
值得注意的是若需要处理使用者输入的资料,而又要防止使用者耍花招破解系统,则可以使用 EscapeShellCmd()。
实例代码:
< ?php
echo exec('whoami');
?>
popen函数
说明:打开文件。
语法:int popen(string command, string mode);
返回值: 整数
详细介绍:
本函数执行指令开档,而该文件是用管道方式处理的文件。用本函数打开的文件只能是单向的 (只能读或只能写),而且一定要用 pclose() 关闭。在文件操作上可使用 fgets()、fgetss() 与 fputs()。若是开档发生错误,返回 false 值。
实例代码:
< ?
$fp = popen( "/bin/ls", "r" );
?>
通过上述函数,PHP可以执行linux系统的shell命令。
❺ linux下php脚本怎么执行
在 Linux 下执行 php 脚本时通常是可以使用以下命令:
#/usr/local/php/bin/php test.php
为简化输入可把此php执行程序 到系统命令目录下:
#cp /usr/local/php/bin/php /usr/sbin/
验证:输入以下命令,如正确获取 php 版本,说明操作成功。
#php -v
这样,以后再执行PHP脚本时可直接采用以下输入方式即可。
#php a.php