php代码执行
① php是如何执行代码解析过程的
就PHP语言来说,它也是一组符合一定规则的约定的指令。 在编程人员将自己的想法以php语言实现后,通过PHP的虚拟机(确切的来说应该是PHP的语言引擎Zend)将这些PHP指令转变成c语言 (可以理解为更底层的一种指令集)指令,而c语言又会转变成汇编语言, 最后汇编语言将根据处理器的规则转变成机器码执行。这是一个更高层次抽象的不断具体化,不断细化的过程。
② 怎么用php命令执行php代码
PHP执行命令的四种方法
方法一:使用exec函数执行系统外部命令
原型:function exec(string $command,array[optional] $output,int[optional]
$return_value)
<?
exec("dir",$outPut);
print_r($outPut);
?>
说明:列出和PHP执行文件同级目录下的所有目录及文件信息。
知识点:exec执行系统外部命令时不会输出结果,而是返回结果的最后一行,如果你想得到结果你可以使用第二个参数,让其输出到指定的数组,此数组一个记录代表输出的一行,即如果输出结果有20行,则这个数组就有20条记录,所以如果你需要反复输出调用不同系统外部命令的结果,你最好在输出每一条系统外部命令结果时清空这个数组,以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。
方法二:使用system函数执行系统外部命令
原型:function system(string $command,int[optional] $return_value)
1
2
3
<?
system("dir");
?>
知识点:system和exec的区别在于system在执行系统外部命令时,直接将结果输出到游览器,如果执行命令成功则返回true,否则返回false。第二个参数与exec第三个参数含义一样。
方法三:使用函数passthru执行系统外部命令
原型:function passthru(string $command,int[optional] $return_value)
知识点:passthru与system的区别,passthru直接将结果输出到游览器,不返回任何值,且其可以输出二进制,比如图像数据。
方法四:反撇号`(和~在同一个键)执行系统外部命令
1
2
3
<?
echo `dir`;
?>
知识点:在使用这种方法执行系统外部命令时,你要确保shell_exec函数可用,否则是无法使用这种反撇号执行系统外部命令的。
③ php代码执行顺序
php代码理论上是从上到下的执行顺序,但是也不是你这样理解!
他最终的输出内容,是根据你写的php代码的逻辑进行判断输出的!
比如:
$i=10;
if($i==20){
echo'您好!'
}else{
echo'太好了';
}
这段代码执行顺序确实是从上到下,但并不是说, echo '您好' 在echo '太好了' 的上面,那就一定会 输出 “您好”这两个字,
而是你看的逻辑
首先 $i 等于10,
所以 if ( $i == 20 )这个条件是不成立的
所以最终输出的结果是 ”太好了“3个字!
php所谓的代码从上到下的执行顺序,那是对于php服务器端而言, 最终你在终端看到的结果, 是以代码的逻辑思维为准!
④ 如何运行PHP
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
我们要在电脑上运运ASP文件 只要装IIS就可以。
哪要运行PHP文件呢。该怎么办!~
解析:
如何安装运行php
1. Unix/Windows: 我的php.ini 文件应该放在哪?
UNIX下默认它应该放在 /usr/local/lib 目录下。 这是它的 /lib. 很多人会在编译时改变它,使用--with-config-file-path 标志。 例如, 你可以这样设它: --with-config-file-path=/etc
然后你可以复制源程序包里的 php.ini-dist 到 /etc/php.ini ,编辑它满足你的本地化需求。
Windows下 php.ini默认的路径是 Windows 系统目录. 如果你在使用 Apache webserver, php.ini 则最先在 Apaches 安装目录下被查找, 例如: c:\program files\apache group\apache. 这样你可以有不同的 php.ini 对应不同版本的 Apache(同一台机器上)。
更多细节请查阅 configuration file.
2. Unix: 我安装了 PHP, 但我每次加载一个文档, 会得到下面的消息: Document Contains No Data ! 怎么回事?
这可能是因为你的 PHP 发生了core-mping错误。 查找你的服务器错误日志文件,看看是否属于这种情况。 然后报告这个错误。如果你知道怎样使用 gdb ,你可以提供一个 backtrace 在你的错误报告里。这将会对开发人员解决 这个问题有很大帮助。如果你是在将PHP作为Apache模块使用,那么请按下面的步骤做:
停止 d 进程
gdb d
停止 d 进程
> run -X -f /path/to/d.conf
浏览你刚才出错的 URL
> run -X -f /path/to/d.conf
如果你还有 core mp, gdb 现在会通知你
打入: bt
在你的 bug report里应该包含backtrace 。 这些会被发往 bugs.php/
如果你的脚本使用了正则表达式函数 (ereg() and friends), 你应该确保你编译 PHP 和 Apache 用的是同一个正则表达式包。 在 PHP 和 Apache 1.3.x 这个过程是自动进行的。
3. Unix: 我使用 RPMS 安装 PHP , 但Apache 不支持 PHP页面! 怎么办?
假设你安装了 Apache 和 PHP(从 RPM ) , 你需要反注释或者增加一些行在你的 .conf 文件里: # Extra MolesAddMole mod_php.cAddMole mod_php3.cAddMole mod_perl.c# Extra MolesLoadMole php_mole moles/mod_php.soLoadMole php3_mole moles/libphp3.so /* for PHP 3 */LoadMole php4_mole moles/libphp4.so /* for PHP 4 */LoadMole perl_mole moles/libperl.so
And add: AddType application/x-d-php3 .php3 /* for PHP 3 */AddType application/x-d-php .php /* for PHP 4 */
... 到全局域里, 或者到你想要的 支持PHP的虚拟域里。
4. 我使用 RPMS 安装 PHP 3 , 但是它没有我需要的数据库选项支持! 我该怎么办?
因为 PHP 3 内建支持的关系, 编译一个完整的可适于所有应用的 PHP RPM是相当困难的。 在 PHP 4有谈到这点。 对 PHP 3, 我们只好建议你使用INSTALL.REDHAT (在 PHP包里)描述的机制。 如果你一定要使用 RPM 版的 PHP 3, 读...
RPM 包管理器设置 RPMS 简单的安装,不带数据库支持 and 因为RPMS 使用 /usr/ 而不是标准的 /usr/local/ 目录存放文件. 你需要告诉 RPM 文件你要支持哪种数据库以及它们的最上级目录的位置。
下面的例子将解释在Apache模式下怎样支持通行的数据库Mysql.
当然所有的这些可以稍作修改,以支持其它的PHP支持的数据库。我们假设你安装了 MySQL and Apache ,完全是用 RPMS 安装的。
首先,移去 mod_php3 : rpm -e mod_php3
然后取得rpm包并安装, 不是 --重编译 rpm -Uvh mod_php3-3.0.5-2.src.rpm
编辑/usr/src/redhat/SPECS/mod_php3.spec 文件
在 %build 一节里增加你想要的数据库支持, 以及路径信息。
对 MySQL 你应该增加: --with-mysql=/usr \
%build 节看起来象: ./configure --prefix=/usr \ --with-apxs=/usr/ *** in/apxs \ --with-config-file-path=/usr/lib \ --enable-debug=no \ --enable-safe-mode \ --with-exec-dir=/usr/bin \ --with-mysql=/usr \ --with-system-regex
改动完成后,象下面这样重编rpm : rpm -bb /usr/src/redhat/SPECS/mod_php3.spec
Then install the rpm rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm
重启 Apache,你已经得到了rpm下的Mysq
l的支持。 注意到这种做法比你重新得到一个 PHP 3 的tarball 代码,按照 INSTALL.REDHAT 的指引一步一步做要容易得多。
5. Unix: 我用 FrontPage 扩展包对Apache打了补丁, 忽然 PHP 停止工作。 是PHP 和 Apache FrontPage 包不兼容吗 ?
不是, PHP 和 FrontPage扩展包运行得很好.。问题是FrontPage 包修改了几个Apache 结构参数,而PHP要用到它们.在FrontPage扩展包被打上后, 重新编译 PHP (使用 make clean ; make ) ,会解决这个问题。
6. Unix/Windows: 我安装了PHP,但在浏览器里看我的PHP页面时,空白一片。
在浏览器里用 查看源文件 看你的脚本,你可能会发现你看到的是源程序。 这表示 web server 并没有送脚本到PHP去执行。肯定是服务器配置上哪儿出了错。 仔细检查PHP安装的 server 配置。
7. Unix/Windows: 我安装了PHP,但在浏览器里看我的 PHP页面时,我得到一个 server 500 error。
这是服务器在运行 PHP 时发生了错误。 为了看到可读的错误信息,在命令行,改变目录到 (php.exe Windows)所在目录, 运行 php -i. 如果有任何问题,详细的错误信息就显示出来了,它会告诉你下一步该做什么。 如果你得到满屏的HTML代码 (phpinfo() 函数的输出), 那么PHP工作正常,这个错误就是由于服务器配置引发的,应该仔细检查。
8. 某些操作系统: 我安装PHP没出错,可是我启动Apache时,得到一个 undefined symbol errors: [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/d Undefined symbols: _press _unpress
这个问题其实与 PHP 无关, 而与 MySQL 客户端库有关。 --with-zlib,有些操作系统需要,而有些不需要。MySQL FAQ已经讲述了这个问题。
9. Windows: 我安装了PHP,但在浏览器里看我的PHP页面, 得到如下错误: cgi error: The specified CGI application mi *** ehaved by not returning a plete set of HTTP headers. The headers it did return are:
这是 PHP 根本没有产生任何输出。 为了看到可读的错误信息,在命令行,改变目录到 (php.exe Windows)所在目录, 运行 php -i. 如果有任何问题,详细的错误信息就显示出来了,它会告诉你下一步该做什么。 如果你得到满屏的HTML代码 (phpinfo() 函数的输出), 那么PHP工作正常。
一旦PHP在命令行模式下工作,再看看你的脚本程序, 它还是失败,可能是因为以下原因:
你的PHP脚本的权限许可。 php.exe, php4ts.dll, php.ini 或者任何你可能装入的PHP文件,它样都必须能被匿名 inter 用户 ISUR_ 访问。
脚本文件根本不存在(或者不是你认为的位置。)请注意在IIS里,你能够阻塞这个错误,做法是在设置脚本映射目录时, 选上 check file exists 框。这样如果脚本不存在,服务器会返回一个404错误。 这样做也有其它的一些好处, 就是IIS仅为你做经过授权的操作。
10. Windows: 我严格按照install的要求做,可是还是不能让我的php在IIS下工作。
确定任何想要运行PHP的用户有操作php.exe的权限! IIS 使用匿名的inter用户,它是在IIS安装时系统自动增加的。 这个用户需要操作 php.exe的权限. 还有,任何需要授权的用户也必须有访问 php.exe的权限。 在 IIS4下,你要告诉它PHP是一个脚本引擎。
⑤ 如何利用PHP执行.SQL文件
本篇文章是对使用PHP执行 SQL文件的实现代码进行了详细的分析介绍 需要的朋友参考下demo php:
复制代码 代码如下: <?php /** * 读取 sql 文件并写入数据库 * @version demo php */ class DBManager { var $dbHost = ; var $dbUser = ; var $dbPassword = ; var $dbSchema = ; function __construct($host $user $password $schema) { $this >dbHost = $host; $this >dbUser = $user; $this >dbPassword = $password; $this >dbSchema = $schema; } function createFromFile($sqlPath $delimiter = (;/n)|((;/r/n))|(;/r) $prefix = $menter = array( # )) { //判断文件是否存在 if(!file_exists($sqlPath)) return false; $handle = fopen($sqlPath rb ); $sqlStr = fread($handle filesize($sqlPath)); //通过sql语法的语句分割符进行分割 $segment = explode(";" trim($sqlStr)); //var_mp($segment); //去掉注释和多余的空行 foreach($segment as & $statement) { $sentence = explode("/n" $statement); $newStatement = array(); foreach($sentence as $subSentence) { if( != trim($subSentence)) { //判断是会否是注释 $isComment = false; foreach($menter as $er) { if(eregi("^(" $er ")" trim($subSentence))) { $isComment = true; break; } } //如果不是注释 则认为是sql语句 if(!$isComment) $newStatement[] = $subSentence; } } $statement = $newStatement; } //对表名加前缀 if( != $prefix) { //只有表名在第一行出现时才有效 例如 CREATE TABLE talbeName $regxTable = "^[/`/ /"]{ }[/_a zA Z]+[/_a zA Z ]*[/`/ /"]{ }$";//处理表名的正则表达式 $regxLeftWall = "^[/`/ /"]{ }"; $sqlFlagTree = array( "CREATE" => array( "TABLE" => array( "$regxTable" => ) ) "INSERT" => array( "INTO" => array( "$regxTable" => ) ) ); foreach($segment as & $statement) { $tokens = split(" " $statement[ ]); $tableName = array(); $this >findTableName($sqlFlagTree $tokens $tableName); if(empty($tableName[ leftWall ])) { $newTableName = $prefix $tableName[ name ]; } else{ $newTableName = $tableName[ leftWall ] $prefix substr($tableName[ name ] ); } $statement[ ] = str_replace($tableName[ name ] $newTableName $statement[ ]); } } //组合sql语句 foreach($segment as & $statement) { $newStmt = ; foreach($statement as $sentence) { $newStmt = $newStmt trim($sentence) "/n"; } $statement = $newStmt; } //用于测试 //var_mp($segment); //writeArrayToFile( data txt $segment); // self::saveByQuery($segment); return true; } private function saveByQuery($sqlArray) { $conn = mysql_connect($this >dbHost $this >dbUser $this >dbPassword); mysql_select_db($this >dbSchema); foreach($sqlArray as $sql) { mysql_query($sql); } mysql_close($conn); } private function findTableName($sqlFlagTree $tokens $tokensKey= & $tableName = array()) { $regxLeftWall = "^[/`/ /"]{ }"; if(count($tokens)<=$tokensKey) return false; if( == trim($tokens[$tokensKey])) { return self::findTableName($sqlFlagTree $tokens $tokensKey+ $tableName); } else { foreach($sqlFlagTree as $flag => $v) { if(eregi($flag $tokens[$tokensKey])) { if( ==$v) { $tableName[ name ] = $tokens[$tokensKey]; if(eregi($regxLeftWall $tableName[ name ])) { $tableName[ leftWall ] = $tableName[ name ]{ }; } return true; } else{ return self::findTableName($v $tokens $tokensKey+ & $tableName); } } } } return false; } } function writeArrayToFile($fileName $dataArray $delimiter="/r/n") { $handle=fopen($fileName "wb"); $text = ; foreach($dataArray as $data) { $text = $text $data $delimiter; } fwrite($handle $text); } //测试 $dbM = new DBManager( localhost w f test ); $dbM >createFromFile( data sql null fff_ ); ?> lishixin/Article/program/PHP/201311/21281
⑥ php怎么运行
如果大家是本地测试php代码的,大家可以用一些工具例如phpstudy等(phpstudy安装使用比较简单,安装以后将php文件复制到安装目录下的www目录中,在浏览器中输入http://127.0.0.1/php文件即可,如果选择了端口需要加入端口(http://127.0.0.1:端口号)。如果架设好了php运行环境,在浏览器中输入网址,就可以看到php的运行效果。
PHP,是英文超级文本预处理语言HypertextPreprocessor的缩写。PHP是一种HTML内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。php就是网络上大家常说的后台,用来处理数据库等,很多网站都是用php写的,包括www..com,www.php.cn等网站,都是使用php语言写的。我们的文章都是通过php代码上传到服务器数据库中,然后通过php代码生成静态的。php文件如何打开:简单一碧燃枝句话php跟txt(文本文档)一样,记事悔敏本就可以打开,但看到的就是代码,而不是php执行后的效果了,例如我们打开test.php代码因为编码有gbk或utf8格式的,用记事本打开utf8格式段态的php文件时,当有中文的时间就是出现乱码,所以我们建议用notepad或editplus等支持utf8格式文件的软件打开。(普通用户选择notepad打开即可,因为notepad比较小)。