首页>>后端>>php->php程序运行过程(php 运行)

php程序运行过程(php 运行)

时间:2023-12-09 本站 点击:0

如何运行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-dumping错误。 查找你的服务器错误日志文件,看看是否属于这种情况。 然后报告这个错误。如果你知道怎样使用 gdb ,你可以提供一个 backtrace 在你的错误报告里。这将会对开发人员解决 这个问题有很大帮助。如果你是在将PHP作为Apache模块使用,那么请按下面的步骤做:

停止 d 进程

gdb d

停止 d 进程

run -X -f /path/to/d.conf

浏览你刚才出错的 URL

run -X -f /path/to/d.conf

如果你还有 core dump, 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 ModulesAddModule mod_php.cAddModule mod_php3.cAddModule mod_perl.c# Extra ModulesLoadModule php_module modules/mod_php.soLoadModule php3_module modules/libphp3.so /* for PHP 3 */LoadModule php4_module modules/libphp4.so /* for PHP 4 */LoadModule perl_module modules/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

1、首先需要在电脑上安装PHPstudy软件和notepad这两个代码编辑软件(如果找到可以代替的就用你那代替的),如图所示红色箭头所示:

2、接下来直接运行PHPstudy,点击红色箭头所指的启动,当左侧两个英文单词lightd和mysql后面显示两个绿点时,说明PHPstudy已经在电脑上成功运行。

3、选择右侧居中的  “php版本”将进入下图界面,服务器选Apache即可。

4、选择好之后,在弹出的phpstudy设置中,选择端口常规设置。

5、在“端口检测”处,查看服务器的端口是否被占用。网站编写好以后就放置在网站目录下。

6、服务器搭设完成。新建一个文档另存在上面的目录旁雹森里,文件名保存为index.php(自由发挥)。然后写一个你认为最肆厅简单的网页进行保存。

7、在浏览器网址处输入127.0.0.1,即可看到刚编写的网站运亩主页,即php代码运行的效果。

php程序运行过程

PHP就是个脚本语言,或者叫宏语言,必须得到解释器来解读。。。。php脚本后缀需要是php,当客户发送HTTP请求获得一个php文件时,服务器不会像其他文件一样,将文件传过去,而是去解读这个文件,他只解读php标签内中的内容,这需要一个解释器去解释这个脚本,解释器需要用真正的编程语言去做,比如C语言,服务器解读之后就会去执行php要求的行为,它不会进行编译,所以不存在生成机器码的环节,这是宏语言和真正的编程语言最大的区别,脚本只是另一培行指个程序的操作对象,而不是程序代码本身。。。。

服务器解读了?php ?之后就会执行相应的动作,php里在?php ?之外的内容会原封不动,?php ?中的echo内容会输出到要发送的文本中(这些文本是要给客户的的,echo中内容一定要符合html语法),所有事情都做完了,就会把这些东西发送给客户,这是已经html文本了,浏览器能够读懂html,如果有rsc属性的标签,浏览器还需要再去服务器下载提到的资源,如果这个资源不是php那么按正常文件下载,没有PHP参与,配配如果还是php,这还要执行php代码,所有东西都准备好了,就能合成一个网页,如果缺少某资源,比如一张图片,如果没有缺省的图片代替,就会是带键个x 。。。。,这就是一个完整的php网页请求。。。

当然客户提交可能是post方法或get方法,会把url提交(这个是所有请求必须的),以及post中的变量附带在请求头后面提交,如果有cookie,客户还要把所有未过期的cookie提交了,这些都会存在在http请求中,发送给php文件时,需要生成超级全局变量,供php用,变量名就是那些$_GET之类的。。

简述PHP页面的执行过程

1. 我们从未手动开启过PHP的相关进程,它是随着Apache的启梁备掘动而运行的;

2. PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);

3. PHP总共有三个模块:内核、Zend引擎、以及扩展层;

4. PHP内核用来处理请求、文件流、错误处理等相关操作;

5. Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;

6. 扩展层是一组函数、类库和流,PHP使用它们来执行一些特定橡核的操作。比滚搭如,我们需要mysql扩展来连接MySQL数据库;

7. 当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;

8. 最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/php/21404.html