PHP命令行运行模式

上传人:mar****e6 文档编号:172144202 上传时间:2022-12-01 格式:DOCX 页数:6 大小:21.65KB
返回 下载 相关 举报
PHP命令行运行模式_第1页
第1页 / 共6页
PHP命令行运行模式_第2页
第2页 / 共6页
PHP命令行运行模式_第3页
第3页 / 共6页
点击查看更多>>
资源描述
命令行下运行php的方法和技巧Submittedbyrocingon2008,December12,9:57AM.PHP学习在linux中直接用php命令来执行php文件一般在linux命令行下运行php文件的代码:XML/HTML代码Ol.linux下执行:#php安装路径-fphp文件路径02.例如:/opt/modules/php/bin/php-f/opt/data/www/yoururl/index.php每次输入php安装路径比较麻烦,其实我们可以不用输入的哦!将/opt/modules/php/bin/php这个文件复制到/usr/sbin下,php将被安装为linux命令在linux下执行以下命令XML/HTML代码01.cp/opt/modules/php/bin/php/usr/sbin这样就可以直接在命令行中用XML/HTML代码01.php-f/opt/data/www/yoururl/index.php执行php程序了,省去输入路径的过程命令行中php接收参数命令行中给php文件输入参数和在http协议下方式不一样,不是用变量名来接收,而是用位置处于第几个来接收其中,第一个参数用$_SERVERargvl接收,第二个参数用$_SERVERargv2接收/opt/data/www/yoururl/index.php中这样写:XML/HTML代码01.php手册网址:phpoptions-rargs.phpoptions-args.-sDisplaycoloursyntaxhighlightedsource.-wDisplaysourcewithstrippedcommentsandwhitespace.-fParse.-vVersionnumber-c|Lookforphp.inifileinthisdirectory-aRuninteractively-dfoo=barDefineINIentryfoowithvaluebar-e-zGenerateextendedinformationfordebugger/profilerLoadZendextension.-lSyntaxcheckonly(lint)-mShowcompiledinmodules-iPHPinformation-hargs.-rRunPHPwithoutusingscripttagsThishelpArgumentspassedtoscript.Use-argswhenfirstargumentstartswith-orscriptisreadfromstdinCLISAPI模块有以下三种不同的方法来获取您要运行的PHP代码:让PHP运行指定文件。phpmy_script.phpphp-fmy_script.php以上两种方法(使用或不使用-f参数)都能够运行给定的my_script.php文件。您可以选择任何文件来运行,您指定的PHP脚本并非必须要以.php为扩展名,它们可以有任意的文件名和扩展名。在命令行直接运行PHP代码。php-rprint_r(get_defined_constants();在使用这种方法时,请您注意外壳变量的替代及引号的使用。注:请仔细阅读以上范例,在运行代码时没有开始和结束的标记符!加上-r参数后,这些标记符是不需要的,加上它们会导致语法错误。通过标准输入(stdin)提供需要运行的PHP代码。以上用法给我们提供了非常强大的功能,使得我们可以如下范例所示,动态地生成PHP代码并通过命令行运行这些代码:$some_application|some_filter|php|sort-ufinal_output.txt以上三种运行代码的方法不能同时使用。和所有的外壳应用程序一样,PHP的二进制文件(php.exe文件)及其运行的PHP脚本能够接受一系列的参数。PHP没有限制传送给脚本程序的参数的个数(外壳程序对命令行的字符数有限制,但您通常都不会超过该限制)。传递给您脚本的参数可在全局变量$argv中获取。该数组中下标为零的成员为脚本的名称(当PHP代码来自标准输入获直接用-r参数以命令行方式运行时,该名称为“-”)。另外,全局变量$argc存有$argv数组中成员变量的个数(而非传送给脚本程序的参数的个数)。只要您传送给您脚本的参数不是以-符号开头,您就无需过多的注意什么。向您的脚本传送以-开头的参数会导致错误,因为PHP会认为应该由它自身来处理这些参数。您可以用参数列表分隔符-来解决这个问题。在PHP解析完参数后,该符号后所有的参数将会被原样传送给您的脚本程序。#以下命令将不会运行PHP代码,而只显示PHP命令行模式的使用说明:$php-rvar_dump($argv);-hUsage:phpoptions-fargs.#以下命令将会把“-h”参数传送给脚本程序,PHP不会显示命令行模式的使用说明:$php-rvar_dump($argv);-harray(2)0=string(1)-1 =string(2)-h除此之外,我们还有另一个方法将PHP用于外壳脚本。您可以在写一个脚本,并在第一行以#!/usr/bin/php开头,在其后加上以PHP开始和结尾标记符包含的正常的PHP代码,然后为该文件设置正确的运行属性。该方法可以使得该文件能够像外壳脚本或PERL脚本一样被直接执行。#!/usr/bin/php假设改文件名为test并被放置在当前目录下,我们可以做如下操作:$chmod755test$./test-h-fooarray(4)0=string(6)./test1=string(2)-h2 =string(2)-3 =string(3)foo正如您所看到的,在您向该脚本传送以-开头的参数时,脚本仍然能够正常运行。表格23-3.命令行选项选项名称描述-s显示有语法高亮色彩的源文件。该参数使用内建机制来解析文件并为其生成一个HTML高亮版本并将结果写到标准输出。请注意该过程所做的只是生成了一个.的HTML标记符块,并不包含任何的HTML头。注:该选项不能和-r参数同时使用。-w显示除去了注释和空格的源代码。注:该选项不能和-r参数同时使用。-f解析并运行给定的文件名。该参数为可选参数且可以不加,仅指明需要运行的文件名即可。-v将PHP、PHPSAPI及Zend的版本信息写入的标准输出。例如:$php-vPHP4.3.0-dev(cli),Copyright(c)1997-2002ThePHPGroupZendEnginev1.3.0,Copyright(c)1998-2002ZendTechnologies-c用该参数,您可以指定一个放置php.ini文件的目录,或者直接指定一个自定义的INI文件,其文件名可以不是php.ini。例如:$php-c/custom/directory/my_script.php$php-c/custom/directory/custom-file.inimy_script.php-a交互地运行PHP。-d用该参数可以自行设置php.ini文件中设置变量的值,其语法为:-dconfiguration_directive=value范例:#Ommitingthevaluepartwillsetthegivenconfigurationdirectiveto1$php-dmax_execution_time-r$foo=ini_get(max_execution_time);var_dump($foo);string(1)1#Passinganemptyvaluepartwillsettheconfigurationdirectivetophp-dmax_execution_time=-r$foo=ini_get(max_execution_time);var_dump($foo);string(0)#Theconfigurationdirectivewillbesettoanythingpassedafterthe=character$php-dmax_execution_time=20-r$foo=ini_get(max_execution_time);var_dump($foo);string(2)20$php-dmax_execution_time=doesntmakesense-r$foo=ini_get(max_execution_time);var_dump($foo);string(15)doesntmakesense-e为调试器等生成扩展信息。-Z加载Zend扩展库。如果仅给定一个文件名,PHP将试图从您系统扩展库的默认路径(在Linux系统下,该路径通常由/etc/ld.so.conf指定)加载该扩展库。如果您用一个绝对路径指定文件名,则系统的扩展库默认路径将不会被使用。如果用相对路径指定的文件名,PHP则仅试图加载相对于当前目录的扩展库。-l该参数提供了对指定PHP代码进行语法检查的方便的方法。如果成功,则向标准输出写入Nosyntaxerrorsdetectedin字符串,并且外壳返回值为0。如果失败,则Errorsparsing以及内部解析器错误信息会一起被写入到标准输出,同时外壳返回值将别设置为255。该参数将无法检查致命错误(如未定义函数),如果您希望检测之名错误,请使用-f参数。注:该参数不能和-r一同使用。-m使用该参数,PHP将打印出内置以及已加载的PHP及Zend模块:$php-mPHPModulesxmltokenizerstandardsessionposixpcreoverloadmysqlmbstringctypeZendModules-i该命令行参数会调用phpinfo()函数,并打印出结果。如果PHP没有正常工作,我们建议您执行php-i命令来查看在信息表格之前或者对应的地方是否有任何错误信息输出。请注意输出的内容为HTML格式,因此输出的信息篇幅较大。-r使用该参数可以在命令行运行PHP代码。您无需加上PHP的起始和结束标识符(?php和?),否则将会导致语法解析错误。注:使用这种形式的PHP时,应个别注意避免和外壳环境进行的命令行参数替换相冲突。显示语法解析错误的范例$php-r$foo=get_defined_constants();Commandlinecode(1):Parseerror-parseerror,unexpected=这里的问题在于即时使用了双引号,sh/bash仍然实行了参数替换。由于$foo没有被定义,被替换后它所在的位置变成了空字符,因此在运行时,实际被PHP读取的代码为:$php-r=get_defined_constants();正确的方法是使用单引号。在用单引号引用的字符串中,变量不会被sh/bash还原成其原值。$php-r$foo=get_defined_constants();var_dump($foo);array(370)E_ERROR=int(1)E_WARNING=int(2)E_PARSE=int(4)E_NOTICE=int(8)E_CORE_ERROR=如果您使用的外壳不是sh/bash,您可能会碰到其它的问题。请报告您碰到的bug,或者发邮件到phpdoc。当您试图将外壳的环境变量引入到马或者用反斜线来转义字符时也可能碰到各种各样的问题,请您在使用时注意!注:-r在CLISAPI中有效,在CGISAPI中无效。-h使用该参数,您可以得到完整的命令行参数的列表及这些参数作用的简单描述。PHP的命令行模式能使得PHP脚本能完全独立于WEB服务器单独运行。如果您使用Unix系统,您需要在您的PHP脚本的最前面加上一行特殊的代码,使得它能够被执行,这样系统就能知道用什么样的程序要运行该脚本。在Windows平台下您可以将php.exe和.php文件的双击属性相关联,您也可以编写一个批处理文件来用PHP执行脚本。为Unix系统增加的第一行代码不会影响该脚本在Windows下的运行,因此您也可以用该方法编写跨平台的脚本程序。以下是一个简单的PHP命令行程序的范例。例子23-1.试图以命令行方式运行的PHP脚本(script.php)#!/usr/bin/phpThisisacommandlinePHPscriptwithoneoption.Usage:canbesomewordyouwouldliketoprintout.Withthe-help,-help,-h,or-?options,youcangetthishelp.在以上脚本中,我们用第一行特殊的代码来指明该文件应该由PHP来执行。我们在这里使用CLI的版本,因此不会有HTTP头信息输出。在您用PHP编写命令行应用程序时,您可以使
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!