热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux中编译PHP会遇到的问题

Linux中编译PHP会遇到的问题--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
  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 行增加一些额外的信息 并且重运行 Apache's 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=//apache-1.3 ( 用户实际的apache-1.3目录位置替代

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

  改变到你的 //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 这行没有包括在 块里,它们会使它无效。

  最后,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' isn't 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/standard'make[2]: *** [all-recursive] Error 1make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'make[1]: *** [all-recursive] Error 1make[1]: Leaving directory `/home/master/php-4.0.1/ext'make: *** [all-recursive] Error 1

  那是你的系统出错了。你应该修复 /usr/include 文件.具体做法是安装和你的 glibc 匹配的 glibc-devel 包。这些错绝对和 PHP 无关。为了证明,你可以这样做:$ cat >test.c <X$ gcc -E test.c >/dev/null

  如果出错,证明你的包含文件受损了。

  13. 我想升级 PHP,我在哪可以看到我现在运行的 PHP 的当初配置安装时所使用的 ./configure 一行的内容?

  你可以看你安装 PHP 源目录下的 config.nice 文件. 如果不行还有另外一种方法。你只要简单运行

  脚本在输出页面的第一行,就是 ./configure 行,是你当初用来配置PHP的那行。

  14. 编译带 GD 库的 PHP 时,它不是给一些奇怪的错, 就是执行时产生 segfaults 段错误。

  你必须确认你在编译 GD 库 和 PHP 时所使用同样的依赖库 (例如 libpng).
推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 有关phpfgetss()函数的文章推荐10篇
    有关phpfgetss()函数的文章推荐10篇:了解如何使用PHP的各种文件函数。查看诸如fopen、fclose和feof之类的基本文件函数;了解诸如fgets、fgetss和f ... [详细]
author-avatar
卡农的信仰144
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有