添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Authentication Services
Command Line Specific Extensions
Compression and Archive Extensions
Cryptography Extensions
Database Extensions
Date and Time Related Extensions
File System Related Extensions
Human Language and Character Encoding Support
Image Processing and Generation
Mail Related Extensions
Mathematical Extensions
Non-Text MIME Output
Process Control Extensions
Other Basic Extensions
Other Services
Search Engine Extensions
Server Specific Extensions
Session Extensions
Text Processing
Variable and Type Related Extensions
Web Services
Windows Only Extensions
XML Manipulation
GUI Extensions
Keyboard Shortcuts
?
This help
Next menu item
Previous menu item
Previous man page
Next man page
Scroll to bottom
Scroll to top
Goto homepage
Goto search
(current page)
Focus search box
./configure),遇到类似如下的问题: checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up 当试图启动 Apache 时,得到类似如下错误信息: fatal: relocation error: file /path/to/libphp4.so: symbol ap_block_alarms: referenced symbol not found 当运行 configure 时,报告说找不到头文件或 GD 库或 gdbm,或其它的什么包! language-parser.tab.c文件时,报错说 yytname undeclared。 make时,看上去一切正常,可当连接最后的程序时报告说找不到某些文件而失败了。 当连接 PHP 时,报告说有一些未定义的引用。 我按照所有的步骤在 UNIX 下安装了PHP 的 Apache 模块版本,但我的 PHP 脚本被显示在浏览器中或者提示保存此文件。 --activate-module=src/modules/php4/libphp4.a,但是此文件根本不存在,于是我改成了 --activate-module=src/modules/php4/libmodphp4.a,结果不行。怎么回事? --activate-module=src/modules/php4/libphp4.a试着把 PHP 编译成 Apache 的静态模块时,报告说我的编译器不服从 ANSI 标准。 --with-apxs编译 PHP 时得到奇怪的错误信息。 make的过程中,在 microtime 中出错,还有很多 RUSAGE_之类的东西。 当带 MySQL 编译 PHP 时,可以正确地运行 configure,但是在 make 的过程中出现了类似以下的错误信息: ext/mysql/libmysqlclient/my_tempnam.o(.text+0x46): In function my_tempnam': /php4/ext/mysql/libmysqlclient/my_tempnam.c:103: the use of tempnam' is dangerous, better use mkstemp',这是怎么回事? 我想升级我的 PHP。上哪里找到我用来配置目前的 PHP 的 ./configure的参数呢? 和 GD 库一起编译 PHP 时,要么给出一个奇怪的编译错误,要么在运行时出现 segfaults。 当编译 PHP 时我看到一些随机的错误,好像死了。我用的是 Solaris,不知道有没有关系。 我用匿名 GIT 服务得到了最新版的 PHP,但是里面没有 configure 脚本!

你必须安装有 GNU autoconf 包,这样才可以从 configure.in 生成 configure 脚本。从 GIT 服务中得到源程序后只要在最高层的目录中运行 ./buildconf 即可。(同时要注意,除非你用了 --enable-maintainer-mode 选项来运行 configure ,否则即使 configure.in 文件更新了,configure 脚本也不会自动重新生成。所以当你发现 configure.in 文件更新了时要确保手工重新生成 configure 脚本。有一个症状是在 configure 之后或者运行 config.status 时在 Makefile 中寻找类似 @VARIABLE@ 的东西。)

你需要告诉 configure/setup 脚本你的 Apache 源程序最上层的目录位置。这意味着你需要这样指定 --with-apache=/path/to/apache 不是 这样 --with-apache=/path/to/apache/src

该错误通常在 Apache 的核心程序被编译为共享用途的 DSO 库时发生。请尝试重新配置 Apache,确保至少使用了如下参数:

--enable-shared=max --enable-rule=SHARED_CORE

更多信息,请阅读 Apache 顶层目录的 INSTALL 文件或者 Apache 的 » DSO 手册

AddType application/x-httpd-php .php 也确认 AddType 这一行没有隐藏在 <Virtualhost> 或者 <Directory> 块中,这可能会造成你的测试脚本所在位置没有被应用到此设置。 最后,Apache 1.2 和 Apache 1.3 之间默认配置文件的位置改变了。你要确认你添加 AddType 行的文件就是实际上用的。你可以在你的 httpd.conf 中添加一个明显的语法错误或者其它明显修改,这可以告诉你是否读取了正确的文件。 --activate-module=src/modules/php4/libphp4.a ,但是此文件根本不存在,于是我改成了 --activate-module=src/modules/php4/libmodphp4.a ,结果不行。怎么回事? libphp4.a 文件本来就不该存在,apache 进程将创建它!

--activate-module=src/modules/php4/libphp4.a 试着把 PHP 编译成 Apache 的静态模块时,报告说我的编译器不服从 ANSI 标准。

这是一个 Apache 误报的错误信息,在新的版本中已经修正了。

这里要检查三件事。首先,出于某些原因当 Apache 生成 apxs Perl 脚本时,有时没有正确的编译和标记变量就结束了。找到你的 apxs 脚本(用命令 which apxs ),有时会在 /usr/local/apache/bin/apxs 或者 /usr/sbin/apxs 。打开并检查类似如下的行: my $CFG_CFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl my $CFG_LD_SHLIB = ' '; # substituted via Makefile.tmpl my $CFG_LDFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl 如果你看到这几行,那问题就在这里。它们可能包含了仅仅空格或者其它不正确的值,例如“q()”。改成这样: my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl my $CFG_LD_SHLIB = 'gcc'; # substituted via Makefile.tmpl my $CFG_LDFLAGS_SHLIB = q(-shared); # substituted via Makefile.tmpl 第二个可能的问题仅可能在在 Red Hat 6.1 和 6.2 中发生。Red Hat 发行的 apxs 脚本坏了。查找这一行: my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install 如果你看到上面这一行,改成这样: my $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install 最后,如果你重新配置或者重装了 Apache,在 ./configure 之后和 make 之前增加一个 make clean 命令。 microtime.c: In function `php_if_getrusage': microtime.c:94: storage size of `usg' isn't known microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function) microtime.c:97: (Each undeclared identifier is reported only once microtime.c:97: for each function it appears in.) microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function) make[3]: *** [microtime.lo] Error 1 make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/master/php-4.0.1/ext' make: *** [all-recursive] Error 1 你的系统坏了。你需要安装一个符合你的 glibc 的 glibc-devel 包来修复 /usr/include 中的文件。这和 PHP 绝对没有任何关系。要证实这一点,试试这个简单的测试: $ cat >test.c <<X #include <sys/resource.h> $ gcc -E test.c >/dev/null 如果出现错误,那你就知道头文件坏了。 当带 MySQL 编译 PHP 时,可以正确地运行 configure,但是在 make 的过程中出现了类似以下的错误信息: ext/mysql/libmysqlclient/my_tempnam.o(.text+0x46): In function my_tempnam': /php4/ext/mysql/libmysqlclient/my_tempnam.c:103: the use of tempnam' is dangerous, better use mkstemp' ,这是怎么回事? 首先,我们需要认识到这只是个 警告 ,而非致命错误。由于这条信息通常是在 make 的最后输出的,所以看起来它可能像是一个致命错误,但实际上不是。当然,如果将编译器设置成遇见警告信息时停止,则这也可以算是致命错误。另外值得一提的是,MySQL 的支持是默认打开的。 自 PHP 4.3.2 起,你将在编译(make)结束后看到下面的文字: Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).

当编译 PHP 时使用非 GNU 的工具会导致问题。确保使用 GNU 工具来确保能够正确编译 PHP。例如,在 Solaris 下面不论使用 SunOS BSD 兼容或者 Solaris 版本的 sed 都不行,但是使用 GNU 或者 Sun POSIX (xpg4) 版本的 sed 就可以。相关连接: » GNU sed » GNU flex » GNU bison