菜鸟学php
A. 菜鸟求助:php中调用系统命令为何有些命令总是失败
PHP执行系统命令(简介及方法)
在PHP中调用外部命令,可以用如下三种方法来实现:
方法一:用PHP提供的专门函数(四个):
PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), shell_exec()
1)exec()
原型: string exec ( string $command [, array &$output [, int &$return_var ]] )
说明: exec执行系统外部命令时不会输出结果,而是返回结果的最后一行。如果想得到结果,可以使用第二个参数,让其输出到指定的数组。此数组一个记录代表输出的一行。即如果输出结果有20行,则这个数组就有20条记录,所以如果需要反复输出调用不同系统外部命令的结果,最好在输出每一条系统外部命令结果时清空这个数组unset($output),以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。
<?php
exec("dir",$output);
print_r($output);
?>
2)system()
原型: string system ( string $command [, int &$return_var ] )
说明: system和睁和exec的区别在于,system在执行系统外部命令时,直接将结果输出到游览器,如果执行命令成功则返回true,否则返回false。第二个参数与exec第三个参数含义一样。
<?php
system("pwd");
?>
3)passthru()
原型: void passthru ( string $command [, int &$return_var ] )
说明: passthru与system的区别,passthru直接将结果输出到游览器,不返回任何值,且其可以输出二进制,比如图像数据。第二个参数可选,是状态码。
<?php
header("Content-type:image/gif");
passthru("/usr/bin/ppm2tiff /usr/share/tk8.4/demos/images/teapot.ppm");
?>
4)shell_exec()
原型: string shell_exec ( string $cmd )
说明: 直接执行命令$cmd
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
方法二:反撇号
原型: 反撇号`(和~在同一个键)执行系统外部命令
说明: 在使用这种方法执行系统外部命令时,要确保shell_exec函数可用,否则是无法使用这种反撇号执行系统外部命令的。
<?php
echo `dir`;
?>
方法三:用popen()函数打开进程
原型: resource popen ( string $command , string $mode )
说明: 能够和命令进行交互。之前介绍的方法只能简单地执行命令,却不能与命令交互。有时须向命令输入一些东西,如在增加系统用户时,要调用su来把当前用户换到root用户,而su命令必须要在命令行上输入root的密码。这种情况下,用之前提到的方法显然是不行的。
popen( )函数打开一个进程管道来执行给定的命令,返迅粗回一个文件句柄,可以对它读和写。返回值和fopen()函数一样,返回一个文件指针。除非使用的是单一的模式打开(读or写),否则必须使用pclose()函数关闭。该指针可以被fgets(),fgetss(),fwrite()调用。出错时,返回FALSE。
<?php
error_reporting(E_ALL);
/* Add redirection so we can get stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
要考虑两个问题悉昌盯:安全性和超时
1)安全性
由于PHP基本是用于WEB程序开发的,所以安全性成了人们考虑的一个重要方面 。于是PHP的设计者们给PHP加了一个门:安全模式。如果运行在安全模式下,那么PHP脚本中将受 到如下四个方面的限制:
执行外部命令
在打开文件时有些限制
连接MySQL数据库
基于HTTP的认证
在安全模式下,只有在特定目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在PhP.ini 文件中用safe_mode_exec_dir指令,或在编译PHP是加上--with-exec-dir选项来指定。
当你使用这些函数来执行系统命令时,可以使用escapeshellcmd()和escapeshellarg()函数阻止用户恶意在系统上执行命令,escapeshellcmd()针对的是执行的系统命令,而escapeshellarg()针对的是执行系统命令的参数。这两个参数有点类似addslashes()的功能。
2)超时
当执行命令的返回结果非常庞大时,可以需要考虑将返回结果输出至其他文件,再另行读取文件,这样可以显着提高程序执行的效率。
如果要执行的命令要花费很长的时间,那么应该把这个命令放到系统的后台去运行。但在默认情况下,象system()等函数要等到这个命令运行完才返回(实际上是在等命令的输出结果),这肯定会引起PHP脚本的超时。解决的办法是把命令的输出重定向到另外一个文件或流中,如:
<?php
system("/usr/local/bin/order_proc > /tmp/abc ");
?>
但我调用的DOS命令需要几分钟的时间,而且为了批处理不能简单的把结果写入文件了事,要顺序执行以下的程序
PHP设置了调用系统命令的时间限制,如果调用命令超时,虽然这个命令还是会被执行完,但PHP没有得到返回值,被终止了(最可恨的是,不显示任何错误)
修改php.ini并重启Apache以允许系统命令运行更长的时间
max_execution_time = 600
我的程序是后台运行的,逻辑OK就成了
B. 寮虹儓鎺ㄨ崘锛侊紒PHP凿滈笩瀛︿範璺绾夸綘鍊煎缑涓鐪嬶紒
寮虹儓鎺ㄨ崘锛佹彮绉楶HP凿滈笩瀛︿範璺寰勶纴锷╀綘寮钖缂栫▼涔嬫梾锛
鍦ㄧ紪绋嬬殑涓栫晫閲岋纴镓惧埌阃傚悎镊宸辩殑瀛︿範璺绾胯呖鍏抽吨瑕併备粖澶╋纴鎴戝皢鍒嗕韩涓绡囨繁鍏ユ祬鍑虹殑PHP瀛︿範鎸囧崡锛屾棤璁轰綘鏄鍒濆﹁呰缮鏄瀵绘眰杩涢桩锛岄兘鍊煎缑涓鐪嬨傝繖绡囨枃绔犳潵镊狿HP鏂版坠鏁欑▼锛岃╂垜浠涓璧锋帰绱㈠畠镄勬牳蹇冨唴瀹广
棣栧厛锛岃笍涓奝HP瀛︿範涔嬫梾锛屼綘闇瑕佺悊瑙e熀纭镄勭绣椤靛厓绱犮备粠HTML/CSS/JS镄勬帉鎻″紑濮嬶纴阃愭ユ瀯寤鸿捣瀵归润镐佺绣椤电殑椹鹃┉鑳藉姏锛岀啛鎭夊厓绱犲睘镐х殑杩愮敤銆傝繖鏄寮鍙戠绣绔欑殑锘虹煶锛屽彧链変翰镓嫔疄璺碉纴镓嶈兘娣卞埢鐞呜В鍏幂礌镄勪綔鐢锛HTML鍏幂礌镄勮繍鐢ㄥ拰瀹炶返镊冲叧閲嶈锛夈
绗浜岄桩娈碉纴锷ㄦ佽瑷镄勯棬镓揿紑浜嗐傜悊瑙PHP镄勫姩镐佹満鍒讹纴鎺屾彙锘烘湰璇娉曪纴灏濊瘯灏哖HP涓嶩TML缁揿悎锛屽埗浣滃嚭绠鍗旷殑锷ㄦ侀〉闱锛岃繖鏄浣犵紪绋嬫濈淮镄勫埯姝ヨ夐啋銆侾HP璇娉旷殑瀛︿範锛屽氨镀忕悊瑙HTML瑙f瀽鍣ㄤ竴镙凤纴闇瑕佹帉鎻″叾鐗规湁璇娉旷粨鏋勶纸锷ㄦ佽瑷璇娉旷殑鎺㈢储涓庡疄璺锛夈
绱ф帴镌锛岃繋鎺ヤ綘镄勫皢鏄疢ySQL镄勬写鎴樸傚︿範濡备綍璁捐℃暟鎹搴掳纴灏哖HP涓庢暟鎹搴撴棤缂濆规帴锛岃繘琛屾暟鎹镎崭綔銆备綘浼氩彂鐜拌嚜宸卞凡缁忚兘鍒朵綔鍑哄搷搴斿纺镄勫姩镐佺珯镣癸纴浣嗕粛鏄鍒濈骇阒舵碉纸鏁版嵁搴撴搷浣灭殑鍏ラ棬涓庡疄璺锛夈
闅忕潃鎶鑳界殑鎻愬崌锛屼綘浼氶溃涓撮”鐩瀹炴垬镄勫叧鍗°备竴涓绠鍗旷殑鐣栾█链椤圭洰锛屾槸妫楠屼綘鏄钖︾湡姝f帉鎻PHP镄勫ソ镞舵満銆备粠琛ㄥ崟鏁版嵁澶勭悊鍒版暟鎹搴撴搷浣滐纴涓姝ユユ瀯寤哄簲鐢ㄩ洀褰锛屽炲己鐢ㄦ埛浣挞獙锛瀹炴垬椤圭洰锛氱暀瑷链镄勫紑鍙戜笌浼桦寲锛夈
铹惰岋纴杩椤彧鏄寮濮嬨傛帴涓嬫潵锛屼綘灏嗘繁鍏ュ︿範闱㈠悜瀵硅薄缂栫▼锛屾帉鎻PHP妗嗘灦锛屽俍end鍜孋akePHP锛屽畠浠鑳界亩鍖栧紑鍙戞祦绋嬶纴鎻愬崌浠g爜璐ㄩ噺锛闱㈠悜瀵硅薄缂栫▼鍜孭HP妗嗘灦镄勫︿範锛夈傚埆蹇树简锛孹ML鍜屼笉鏂镄勫︿範绮剧炲悓镙烽吨瑕侊纴瀛︽棤姝㈠冦
链钖庯纴涓嶈佸缮璁板熼壌浠栦汉镄勪紭绉浠g爜锛屽潥鎸佷笅铡伙纴涓撴敞浜庢疮涓闂ㄨ瑷镄勫︿範锛岀洿鍒扮湡姝g簿阃氾纸浠g爜閴磋祻涓庝笓娉ㄥ︿範锛夈傛荤粨𨱒ヨ达细
- 1) 涓篐TML镓扑笅锘虹锛屼絾镞堕棿绱у紶镞讹纴锘虹鐭ヨ瘑瓒冲熷紑濮嬨
- 2) 灏哖HP涓嶩TML缁揿悎璋冭瘯锛屽揩阃熶笂镓嬨
- 3) 瀛︿细MySQL锘虹镎崭綔锛岃捐℃暟鎹搴撱
- 4) 瀹炶返椤圭洰锛屽傜暀瑷链锛岃冭槛UI浼桦寲銆
- 5) 涓撴敞涓闂ㄨ瑷锛屽啀镓╁𪾢镊冲叾浠栭嗗烟銆
- 6) 鎺㈢储JavaScript锛屾彁鍗囩紪绋嬫妧鑳姐
璁颁綇锛岀紪绋嬩箣璺骞堕潪涓韫磋屽氨锛屼絾姣忎竴姝ラ兘鏄钖戝墠杩涖傛棤璁轰綍镞跺紑濮嬶纴閮戒笉鏅氾纴鍏抽敭鍦ㄤ簬琛屽姩銆傜濅綘鍦≒HP镄勬帰绱涓鍙栧缑鎴愬姛锛屼翰镓嫔疄鐜颁綘镄勭绣绔欐ⅵ𨱍筹紒
C. 菜鸟教程php教程改背景颜色
在PHP页面中有没有HTML代码。
如果有的话找到<body>这个标签然后替换成这个:
<body style=" background-color:#00FF00"> 既可调成自己需要的颜色。
如果在PHP页面上没有HTML代码的话,那么就是调用模板了,找到那个页的模板然后在找到CSS文件来修改页面背景颜色了。
D. 凿滈笩闂棰桡细濡备綍阒呰籶hp镄勯”鐩婧愮爜锛岃ュ备綍涓嬫坠锛屼緥濡傚备綍阒呰笾cshop锛宻hopex銆
缁揿悎镊韬缁忛獙锛屾垜璇翠竴涓嫔惂銆
棣栧厛鏄鍏堣繍琛屼竴涓嬭繖涓椤圭洰锛岄氲繃Xdebug绛夊伐鍏蜂简瑙d竴涓嬫枃浠剁殑锷犺浇杩囩▼浠ュ强璋幂敤镄勫嚱鏁扮瓑绛夛纴瑙傚疗URL镄勫啓娉曘佽烦杞銆佸彉鎹銆
鍦ㄤ简瑙d简杩欎釜椤圭洰澶ц嚧𨱍呭喌涔嫔悗锛岀湅瀹幂殑鏁版嵁搴挞儴鍒嗭纴锲犱负杩欎簺琛屼笟搴旂敤绫荤殑椤圭洰澶ч儴鍒嗛兘鏄鏁版嵁<->椤甸溃杩欑嶆ā寮忕殑锛屾墍浠ラ氲繃鐪嬫暟鎹搴撹〃銆佸瓧娈电殑璁捐″氨澶т綋鑳界煡阆挞〉闱涓娄细镐庝箞鍐欍傚氨姣斿傝磂cshop锛屽畠镄勫晢鍝佽〃镄勫瓧娈垫湁鍝浜涳纴澶栭敭鏄浠涔堬纴澶ф备细杩炴帴鍝浜涜〃锛屽啀铡绘垒鍒板晢鍝佺殑闾d釜php鏂囦欢锛屽瑰簲镌涓婇溃镄勬暟鎹鍦ㄨ〃閲岄溃镓撅纴杩欐牱涓𨱒ヤ綘灏卞彲浠ョ煡阆撴牴鎹杩欎簺鏁版嵁灏卞彲浠ュ湪鍦ㄨ繖涓椤甸溃涓婂仛浠涔埚皬淇鏀广佸皬璁捐°
涓轰简镟村ソ镄勭悊瑙i”鐩锛岃缮闇瑕佺湅椤圭洰镄勭粨鏋勶纴阃氲繃涓婇溃镄勪竴姝ュぇ姒傚彲浠ョ煡阆撹繖涓椤圭洰鍏抽敭镄勯儴鍒嗙殑浣岖疆锛屾渶瀹规槗淇鏀圭殑鏄妯℃澘/椤甸溃涔嬬被镄勶纴鍙浠ュ皾璇旷潃铡讳慨鏀癸纴瀵逛簬涓氩姟阃昏緫浠g爜锛屽彲浠ュ弬镦у叾缂栧啓镄勬柟娉曪纴链缁堢殑鐩镄勮缮鏄鑳藉熻嚜宸卞幓鍐欎竴涓钖屾牱镄勪笟锷¢昏緫锛屽傛灉璇寸敤镣瑰绩镄勮瘽鍙浠ュ﹀埌涓嶅皯銆
阒呰讳唬镰佹渶链夋剰镐濈殑閮ㄥ垎灏辨槸闾d簺鐗瑰埆镄勬柟娉曘佸姛鑳斤纴姣斿傝寸敓鎴愬叧阌瀛楀垪琛ㄣ佸垎璇嶃佹悳绱銆佹帹钻愪箣绫荤殑锛屽彲浠ュ幓镓炬垒鐪嬶纴闾d簺镊宸变互鍓岖湅璧锋潵寰埚囧欎笉鐞呜В镄勫姛鑳芥槸濡备綍瀹炵幇镄勚
镐讳箣锛屾垜璇濊寸殑澶澶氢篃娌″氩ぇ鐢锛屾渶缁堣缮鏄瑕佷綘镊宸辩敤鐢ㄥ绩镄勚