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 相关文章推荐
国内php原创论坛
Oct 09 PHP
第十三节--对象串行化
Nov 16 PHP
粗略计算在线时间,bug:ip相同
Dec 09 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
PHP编程实现脚本异步执行的方法
Aug 09 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
JS动态生成年份和月份实例代码
2017/02/04 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Python中格式化format()方法详解
2017/04/01 Python
Python import与from import使用及区别介绍
2018/09/06 Python
Tesserocr库的正确安装方式
2018/10/19 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
Myholidays美国:在线旅游网站
2019/08/16 全球购物
工作的心得体会
2013/12/31 职场文书
金融行业职业生涯规划范文
2014/01/17 职场文书
40岁生日感言
2014/02/15 职场文书
三项教育活动实施方案
2014/03/30 职场文书
采购意向书范本
2014/03/31 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
2015年服务员工作总结
2015/04/08 职场文书
2016年清明节寄语
2015/12/04 职场文书
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js