电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> PHP
编译问题-PHP教程,PHP基础
作者:网友供稿 点击:8
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
这章节搜集了很多编译时会产生的错误情况。 1. 我用匿名cvs得到最新版的源代码包, 但没有配置脚本文件! 2. 我在配置 php 在 apache下工作时出了问题。 它说不能找到 httpd.h, 可是我看它就在那里! 3. 当我运行conifgure时,它说它不能找到include文件或 一些库: gd, gdbm, 或其它的一些包! 4. 我在编译文件 language-parser.tab.c时, 出错,提示: yytname undeclared. 5. 当我运行 make, 起初正常但 最终失败了,在连接最后的应用时,出错说找不到一些文件。 6. 在连接 php 时, 出一堆错说 undefined references。 7. 我不清楚怎样在 apache 1.3下编译php。 8. 我按照步骤一步一步安装了apache模块(unix下), 可是在浏览器里打开 php 脚本时它却问我是否要保存。 9. 系统说使用: --activate-module=src/modules/php4/libphp4.a, 可那文件根本不存在, 我只好改成 --activate-module=src/modules/php4/libmodphp4.a 好了,它不工作了! 该怎么办? 10. 我要把php编译成apache的静态模块,用: --activate-module=src/modules/php4/libphp4.a 可是系统说我的编译器不是 ansi 兼容的。 11. 我用 --with-apxs编译php时, 我总是得到一些奇怪的错误。 12. make时, 我得到很多关于microtime错误, 还有许多 rusage_ stuff. 13. 我想升级php,我在哪可以看到我现在运行的php 的当初配置安装时所使用的./configure 一行的内容? 14. 编译带gd库的php时,它不是给一些奇怪的错, 就是执行时产生 segfaults 段错误.
1. 我用匿名cvs得到最新版的源代码包, 但没有配置脚本文件!

你必须安装 gnu autoconf 包,这样可以从 configure.in生成配置脚本文件. 只要运行在cvs服务器得到源代码的顶级目录下的 ./buildconf。 (注意, 除非你运行configure --enable-maintainer-mode 选项, 配置脚本是不会重新生成, 即使configure.in 文件已更新, 所以当你发现 configure.in 改变了,你也要手工做一遍. 在config或config.status 运行后应该在你的makefile里能看到象@variable@这样的标号。)
2. 我在配置 php 在 apache下工作时出了问题。 它说不能找到 httpd.h, 可是我看它就在那里!

你要告诉 configure/setup 脚本 apache 的顶级目录的位置。 就是说你要标明 --with-apache=/path/to/apache , 而不是 --with-apache=/path/to/apache/src.
3. 当我运行conifgure时,它说它不能找到include文件或 一些库: gd, gdbm, 或其它的一些包!

你可以看看 configure 脚本,那些头文件或非标准库的位置,要送一些特殊的标志给c预处理器。例如:
cppflags=-i/path/to/include ldflags=-l/path/to/library ./configure
假如你的shell使用 csh-variant , 那么它将会是 (为什么?):
env cppflags=-i/path/to/include ldflags=-l/path/to/library ./configure

4. 我在编译文件 language-parser.tab.c时, 出错,提示: yytname undeclared.

你需要更新你的 bison 版本. 你可以在 ftp://ftp.gnu.org/pub/gnu/bison/找到最新版本.
5. 当我运行 make, 起初正常但 最终失败了,在连接最后的应用时,出错说找不到一些文件。

一些老版本的 make 不能把 functions 目录下的编译的文件放到同一个目录下, 试着运行 cp *.o functions 然后再运行 make 看看是否会好些。 如果好了,你真的应该更新你的gnu make的版本了。
6. 在连接 php 时, 出一堆错说 undefined references。

看看文件里的连接行,确认所有的相关包都已经正确包含。通常这样是因为缺少-ldl,还有一些你想支持的数据库包。
如果你是在连接到 apache 1.2.x, 你记得要在在extra_libs 行增加一些额外的信息 并且重运行 apaches configure 脚本吗? 参见发行包里的 install 文件。
很多人说他们一增加 -ldl 马上得到了 libphp4.a 。
7. 我不清楚怎样在 apache 1.3下编译php。

事实上很简单,按下面的步骤:

  • 取得 apache 1.3 源代码,在下面的位置 http://www.apache.org/dist/.

  • 在某个目录下解压出来, 如 /usr/local/src/apache-1.3.

  • 在php的发行包目录下,编译 php ,./configure --with-apache=/<path>/apache-1.3 ( 用户实际的apache-1.3目录位置替代 <path> .

  • 打入: make 然后: make install 编译php,拷必须的文件到apache目录下。

  • 改变到你的 /<path>/apache-1.3/src 目录,编辑 configuration文件. 把下面的行增加到文件里: addmodule modules/php4/libphp4.a.

  • 打入: ./configure 然后: make.

  • 这样你就有了一个 httpd 文件!


注意:你也可以使用新的apache ./configure 脚本. 见发行包里的 readme.configure 当然也要看看php发行包里的 install 文件。
8. 我按照步骤一步一步安装了apache模块(unix下), 可是在浏览器里打开 php 脚本时它却问我是否要保存。

这意味着你的php模块没有被加载。你可从下面三点来检查:

  • 确认你运行的httpd是你刚刚编译了php的httpd. 可以运行: /path/to/binary/httpd -l
    如果你没有看到 mod_php4.c 列出来,那么你运行了不正确的httpd. 最好重新安装它。

  • 确认你在 apache .conf 文件里增加了正确的mime 类型.它应该是这样: addtype application/x-httpd-php3 .php3 ( php 3)
    或 addtype application/x-httpd-php .php ( php 4)
    也保证 addtype 这行没有包括在 <virtualhost> 或 <directory> 块里,它们会使它无效。

  • 最后, apache 1.2 和 apache 1.3默认的配置文件的位置是不同的. 你应该检查你增加了addtype行的配置文件的位置 . 你可以在 httpd.conf 放一些明显的错误或改变,这样如果这文件被读的话,系统会通知你。


9. 系统说使用: --activate-module=src/modules/php4/libphp4.a, 可那文件根本不存在, 我只好改成 --activate-module=src/modules/php4/libmodphp4.a 好了,它不工作了! 该怎么办?

请注意 libphp4.a 事实并不存在. apache 进程会创建它!
10. 我要把php编译成apache的静态模块,用: --activate-module=src/modules/php4/libphp4.a 可是系统说我的编译器不是 ansi 兼容的。

这个错误消息是 apache 误导的,可以用更新版本来修正它。
11. 我用 --with-apxs编译php时, 我总是得到一些奇怪的错误。

出现这样的情况可以从三点来检查. 第一, 因为某种原因,apache 在编译apxs perl 脚本的时候, 它没有创建适当的标志变量, 找到你的apxs脚本 (试试命令 which apxs, 通常在 /usr/local/apache/bin/apxs or /usr/sbin/apxs. 打开它找到象下面这样的行:
my $cfg_cflags_shlib  =  ;          # substituted via makefile.tmplmy $cfg_ld_shlib      =  ;          # substituted via makefile.tmplmy $cfg_ldflags_shlib =  ;          # substituted via makefile.tmpl
如果你看到的是这样,那么问题就出在这里. 因为值里包含的是空格或其它不正确的值, 如 q(). 把它样变成象下面的那样:
my $cfg_cflags_shlib  = -fpic -dshared_module; # substituted via makefile.tmplmy $cfg_ld_shlib      = gcc;                   # substituted via makefile.tmplmy $cfg_ldflags_shlib = q(-shared);              # substituted via makefile.tmpl
第二种可能仅仅出现在red hat 6.1 和 6.2上. apxs 脚本 red hat 版有错. 看这行:
my $cfg_libexecdir    = modules;         # substituted via apaci install
如果你看到了,就把它改成下面的行:
my $cfg_libexecdir    = /usr/lib/apache; # substituted via apaci install
第三, 你要是 重配置/重安装 apache, 必须在 ./configure 后,在 make之前,执行make clean
12. make时, 我得到很多关于microtime错误, 还有许多 rusage_ stuff.

在安装过程中 make时,如果你看到下面的错:
microtime.c: in function `php_if_getrusage:microtime.c:94: storage size of `usg isnt knownmicrotime.c:97: `rusage_self undeclared (first use in this function)microtime.c:97: (each undeclared identifier is reported only oncemicrotime.c:97: for each function it appears in.)microtime.c:103: `rusage_children undeclared (first use in this function)make[3]: *** [microtime.lo] error 1make[3]: leaving directory `/home/master/php-4.0.1/ext/standardmake[2]: *** [all-recursive] error 1make[2]: leaving directory `/home/master/php-4.0.1/ext/standardmake[1]: *** [all-recursive] error 1make[1]: leaving directory `/home/master/php-4.0.1/extmake: *** [all-recursive] error 1

那是你的系统出错了. 你应该修复 /usr/include 文件.具体做法是安装和你的glibc匹配的glibc-devel 包. 这些错绝对和php无关,为了证明,你可以这样做:
$ cat >test.c <<x#include <sys/resource.h>x$ gcc -e test.c >/dev/null
如果出错,证明你的包含文件受损了.
13. 我想升级php,我在哪可以看到我现在运行的php 的当初配置安装时所使用的./configure 一行的内容.?

你可以看你安装php源目录下的 config.nice 文件. 如果不行还有另外一种方法.你只要简单运行
<?php phpinfo(); ?>
脚本. 在输出页面的第一行,就是 ./configure 行, 是你当初用来配置php的那行.
14. 编译带gd库的php时,它不是给一些奇怪的错, 就是执行时产生 segfaults 段错误.

你必须确认你在编译 gd 库 和 php 时所使用同样的依赖库 (例如 libpng). 
文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·Windows下的PHP5.0安装配制详解-PHP教程,PHP安装
·PHP在XP下IIS和Apache2服务器上的安装-PHP教程,PHP应用
·最近忙于FTP,好站多多!有好多好东东哦!不敢独享!-PHP教程,PHP基础
·PHP 5.0 Pear安装方法-PHP教程,PHP安装
·PHP开发利器-PRADO 1.6(4)-PHP教程,PHP应用
·Sun Sparc Solaris 2.6 Apache-1.3.12+MySQL-3.23.5+PHP-3.0.15 安装记-PHP教程,PHP应用
·php5学习笔记(转)-PHP教程,PHP应用
·APACHE安装笔记-PHP教程,PHP安装
·PHP.MVC的模板标签系统(四)-PHP教程,PHP应用
·PHP.MVC的模板标签系统(二)-PHP教程,PHP应用

最新文章
·PHP源码-利用 QQWry.Dat 实现 IP 地址高效检索
·Php高手带路--问题汇总解答[2]
·PHPQQ编程(2):取QQ在线状态
·php5手动最简安装方法
·福利彩票幸运号码自动生成器
·PHP开发利器-PRADO 1.6
·在Apache 服务器上启用PHP支持
·Windows2000_pro下安装Apache+PHP4+My
·php文件上传的实现
·PHP开发框架的现状和展望




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号