|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
虽说不上很好,但至少一般的数据操作,再在原有的SQL语言的基础上,用得还是可以的。 咱们都晓得,在盘算机迷信中,SHELL相似于DOS下的command.com。它吸收用户号令,然后挪用响应的使用法式。同时它又是一种法式设计言语。作为号令言语,它交互式注释和履行用户输出的号令或主动地注释和履行事后设定好的连续串的号令;作为法式设计言语,它界说了各类变量和参数,并供应了很多在高阶言语中才具有的掌握布局,包含轮回和分支。
PHP经由长工夫的开展,良多用户都很懂得PHP了,这里我宣布一下团体了解,和人人会商会商。大多半情形下,我利用 exec() 号令和数据数组处置一切器材。或对更复杂的号令利用 shell_exec(),特别是不关怀了局时。假如仅需前往一个 PHP shell剧本,我就利用 passthru()。凡是,我在分歧的场所中利用分歧的函数,而且有时它们是可以交换的。
这完整取决于我的心境和要完成的目标。您能够发问的另外一个成绩是 “它们的优点是甚么?”。假如您没有眉目,或一个项目十分合适利用 shell 号令,但不晓得若何利用,那末我在这里供应一些看法。假如您正在编写一个供应各类备份或文件传输功效的使用法式,您可以选择利用 shell_exec() 或这里供应的其他号令之一运转 rsync 撑持的 PHP shell剧本。您可以编写 PHP shell剧本使其包括需要的 rsync 号令,然后利用 passthru() 依据用户的号令或 cron 功课履行它。
例如,一名用户在您的使用法式中有恰当的权限(好比办理员权限),他想将 50 个 PDF 文件从一个办事器发送到另外一个办事器。那末,该用户需求在使用法式中导航到准确的地位,单击 Transfer,选择需求发送的 PDF,然后单击 Submit。在这个过程当中,该表单应当有一个 PHP 剧本,它利用前往选项变量经由过程 passthru() 运转 rsync 剧本,如许您就晓得是不是产生成绩,以下所示。
清单 1. 经由过程 passthru() 运转 rsync 剧本的示例 PHP 剧本
<?php
passthru('xfer_rsync.sh',$returnvalue);
if ($returnvalue != 0){
//we have a problem!
//add error code here
}else{
//we are okay
//redirect to some other page
}
?>
假如您的使用法式需求列出历程或文件,或关于这些历程或文件的数据,您可使用本文总结的号令之一轻松完成这个目标。例如,一个复杂的 grep 号令可以匡助您找到婚配特定搜刮前提的文件。将它与 exec() 号令一同利用可以将了局保留到一个数组中,这答应您构建一个 HTML 表或表单,它们又进一步答应您运转其他号令。
到今朝为止,我会商了用户生成的事务 —— 用户只需按下按钮或单击链接,PHP 就运转响应的剧本。您还可以将自力的 PHP 剧本和 cron 或其另日程布置法式一同利用,从而完成一些风趣的后果。例如,假如您一个备份剧本,您可以经由过程 cron 运转它,或将它打包到 PHP 剧本后在运转。
为何要如许做?这仿佛是过剩的,不是吗?不是如许的 —— 您需求如许思索,您可以经由过程 exec() 或 passthru() 运转备份剧本,然后依据前往代码履行一些行动。假如呈现毛病,您可以将其纪录到毛病日记或数据库中,或发送一封正告电子邮件。假如剧本胜利,您可以将原始的输入转储到数据库(例如,rsync 有一个详实(verbose)形式,对随后诊断成绩非常有效)。
平安
咱们在这里扼要会商一下平安性:假如您承受用户输出并将信息传递到 shell,那末最好过滤用户输出。删除您以为无害的号令和不答应的内容,好比 sudo(作为超等用户运转)或 rm(删除)。现实上,您能够不但愿用户发送开放的恳求,而是让他们从列表当选择。
例如,您运转一个承受文件列表作为参数的传输法式,您应当经由过程一系列复选框列出一切文件。用户可以选择和作废选择文件,并经由过程单击 Submit 激活 rsync shell 剧本。用户不克不及本人输出文件或利用正则表达式。
本文从两个方面引见的PHP shell剧本的用法,但愿能给你带来匡助。
根据功能来进行封装等。很多的不懂,在使用搜索引擎查找,或者请教老师和在老师详细的讲解、指导下,都能顺利解决。 |
|