扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在安装完PHP和Apache2后,我们需要安装PHP命令行解释器。
创新互联公司为企业级客户提高一站式互联网+设计服务,主要包括网站建设、成都网站建设、app软件开发、小程序制作、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。
# apt-get install php5-cli [Debian 及类似系统]
# yum install php-cli [CentOS 及类似系统]
接下来我们通常要做的是,在/var/www/html(这是 Apache2 在大多数发行版中的工作目录)这个位置创建一个内容为 ?php phpinfo(); ?,名为 infophp.php 的文件来测试(PHP是否安装正确),执行以下命令即可。
# echo '?php phpinfo(); ?' /var/www/html/infophp.php
然后,将浏览器访问 ,这将会在网络浏览器中打开该文件。
不需要任何浏览器,在Linux终端中也可以获得相同的结果。在Linux命令行中执行/var/www/html/infophp.php,如:
# php -f /var/www/html/infophp.php
由于输出结果太大,我们可以通过管道将上述输出结果输送给 less 命令,这样就可以一次输出一屏了,命令如下:
# php -f /var/www/html/infophp.php | less
检查所有PHP信息
这里,‘-f‘选项解析并执行命令后跟随的文件。
你想问得是php如何执行shell命令把?
可以用system(),exec(),passthru()这三个函数实现
虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的:
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:都可以获得命令执行的状态码
例子:system("ls -al");
【使用之前要在php.ini中把safe_mode关闭】
首先先要给大家介绍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命令。
cd是没用的,因为多个system语句执行的时候,PHP是分别调用shell,每次的环境都要初始化,解决的方法是PHP生成一个shell文件,然后执行它,例如:
file_put_countents('tmp.sh',"cd /usr/local
echo 'string'
ls $callback");
system('tmp.sh');
注意:多条命令可以直接使用换行。
在 Linux 下执行 php 脚本时通常是可以使用以下命令:pre t="code" l="bash"#/usr/local/php/bin/php test.php为简化输入可把此php执行程序 copy 到系统命令目录下:pre t="code" l="bash"#cp /usr/local/php/bin/php /usr/sbin/验证:输入以下命令,如正确获取 php 版本,说明操作成功。pre t="code" l="bash"#php -v这样,以后再执行PHP脚本时可直接采用以下输入方式即可。pre t="code" l="bash"#php a.php
php的内置函数exec,system都可以调用系统命令(shell命令),当然还有passthru,escapeshellcmd等函数。
//语法 :
string exec ( string command , array output , int return_var]] )
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流