PHP安装问题


Posted in PHP onOctober 09, 2006

安装
这节将讲述安装过程中最常见的问题。PHP 适用于 几乎任何的 OS (或许 OSX 之前的 MacOS 除外 ), 和几乎任何的WEB 服务器。
要安装PHP, 跟着 发行版里的安装 文件的指引. Windows 用户也应该读install.txt 文件. 这儿也有一些帮助文档 。 1. Unix/Windows: 我的php.ini 应该放在哪? 2. Unix: 我安装了 PHP, 但我每次加载一个文档, 会得到下面的消息: 'Document Contains No Data'! 怎么回事? 3. Unix: 我使用 RPMS 安装 PHP , 但Apache 不支持 PHP页面! 怎么办? 4. Unix: 我使用 RPMS 安装 PHP 3 , 但是它没有我需要的数据库编译支持! 我该怎么办? 5. Unix: 我用 FrontPage 扩展包对Apache打了补丁, 忽然 PHP 停止工作。 是PHP 和 Apache FrontPage 包不兼容吗 ? 6. Unix/Windows: 我安装了PHP,但在浏览器里看我的PHP页面时,空白一片。 7. Unix/Windows: 我安装了PHP,但在浏览器里看我的PHP页面时,我得到一个 server 500 error. 8. 某些操作系统: 我安装PHP没出错,可是我启动Apache时,得到一个 undefined symbol errors: [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols:  _compress  _uncompress9. Windows: 我安装了PHP,但在浏览器里看我的PHP页面, 得到如下错误: cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:10. Windows: 我严格按照install的要求,可是还是不能让我的php在IIS下工作。
1. Unix/Windows: 我的php.ini 文件应该放在哪?
UNIX下默认它应该放在 /usr/local/lib 目录下。 这是它的 <install-path>/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模块使用,那么请按下面的步骤做:

停止 httpd 进程
gdb httpd
停止 httpd 进程
> run -X -f /path/to/httpd.conf
浏览你刚才出错的 URL
> run -X -f /path/to/httpd.conf
如果你还有 core dump, gdb 现在会通知你
打入: bt
在你的 bug report里应该包含backtrace 。 这些会被发往 http://bugs.php.net/

如果你的脚本使用了正则表达式函数 (ereg() and friends), 你应该确保你编译 PHP 和 Apache 用的是同一个正则表达式包。 在 PHP 和 Apache 1.3.x 这个过程是自动进行的。
3. Unix: 我使用 RPMS 安装 PHP , 但Apache 不支持 PHP页面! 怎么办?
假设你安装了 Apache 和 PHP(从 RPM ) , 你需要反注释或者增加一些行在你的 http.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.soAnd add: AddType application/x-httpd-php3 .php3    /* for PHP 3 */AddType application/x-httpd-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/sbin/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下的Mysql的支持。 注意到这种做法比你重新得到一个 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/httpd Undefined symbols:  _compress  _uncompress
这个问题其实与 PHP 无关, 而与 MySQL 客户端库有关。 --with-zlib,有些操作系统需要,而有些不需要。MySQL FAQ已经讲述了这个问题。
9. Windows: 我安装了PHP,但在浏览器里看我的PHP页面, 得到如下错误: cgi error: The specified CGI application misbehaved by not returning a complete 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文件,它样都必须能被匿名 internet 用户 ISUR_<machinename> 访问。
脚本文件根本不存在(或者不是你认为的位置。)请注意在IIS里,你能够阻塞这个错误,做法是在设置脚本映射目录时, 选上'check file exists'框。这样如果脚本不存在,服务器会返回一个404错误。 这样做也有其它的一些好处, 就是IIS仅为你做经过授权的操作。
10. Windows: 我严格按照install的要求做,可是还是不能让我的php在IIS下工作。
确定任何想要运行PHP的用户有操作php.exe的权限! IIS 使用匿名的internet用户,它是在IIS安装时系统自动增加的。 这个用户需要操作 php.exe的权限. 还有,任何需要授权的用户也必须有访问 php.exe的权限。 在 IIS4下,你要告诉它PHP是一个脚本引擎。 

PHP 相关文章推荐
数据库相关问题
Oct 09 PHP
PHP VS ASP
Oct 09 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
php高级编程-函数-郑阿奇
Jul 04 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
Aug 03 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 PHP
提问的智慧
Oct 09 #PHP
DOMXML函数笔记
Oct 09 #PHP
一个很方便的 XML 类!!原创的噢
Oct 09 #PHP
提问的智慧(2)
Oct 09 #PHP
PHP的FTP学习(二)[转自奥索]
Oct 09 #PHP
在PHP中利用XML技术构造远程服务(上)
Oct 09 #PHP
在PHP中利用XML技术构造远程服务(下)
Oct 09 #PHP
You might like
phpMyadmin 用户权限中英对照
2010/04/02 PHP
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
日期 时间js控件
2009/05/07 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
nodeJS微信分享
2017/12/20 NodeJs
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
9种python web 程序的部署方式小结
2014/06/30 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
python3中函数参数的四种简单用法
2018/07/09 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
人力资源管理毕业生自荐信
2013/11/21 职场文书
毕业生求职的求职信
2013/12/05 职场文书
商场营业员岗位职责
2015/04/14 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB