澳门新浦京8455com编译问题

那章节搜罗了多数编写翻译时会发生的不当情状。 1.
自己用无名氏CVS得到最新版的源代码包, 但未有布置脚本文件! 2. 自身在配置 PHP 在
Apache下职业时出了难题。 它说不能够找到 , 可是本人看它就在那边! 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模块,
然则在浏览器里打开 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时, 作者连连获得部分竟然的不当。

DSO模块加载模块提供了灵活性。

  1. 在 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里能见到象@VAMuranoIABLE@那样的标号。卡塔尔 2. 自家在布局PHP 在 Apache下专门的职业时出了难点。 它说无法找到 , 但是本身看它就在此边!
    你要告知 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 ./configure4.
    笔者在编译文件 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
    源代码,在底下的岗位 在有个别目录下解压出来, 如 /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. 那样你就有了二个 文件!
    注意:你也得以利用新的Apache ./configure 脚本. 见发行李包裹里的
    README.configure 当然也要看看PHP发行李包裹里的 INSTALL 文件。 8.
    笔者依照步骤一步一步安装了Apache模块, 不过在浏览器里展开 PHP
    脚本时它却问小编是还是不是要保存。
    那象征你的PHP模块未有被加载。你可从上面三点来检查:
    确认你运维的Httpd是您恰巧编写翻译了PHP的Httpd. 能够运维: /path/to/binary/ -l
    若是您未曾寓目 mod_php4.c 列出来,那么您运行了不正确的Httpd.
    最棒重新安装它。 确认你在 Apache .conf 文件里扩大了情有可原的Mime
    类型.它应当是那样: AddType application/x- .php3 ( PHP 3State of Qatar 或 AddType
    application/x- .php ( PHP 4卡塔尔(قطر‎ 也保障 AddType 那行未有包蕴在 Virtualhost
    或 Directory 块里,它们会使它不行。 最终, Apache 1.2 和 Apache
    1.3默许的安插文件的职位是分歧的.
    你应该检查你扩大了AddType行的布局文件的地点 . 你可以在
    放一些眼看的荒谬或转移,那样假如这文件被读的话,系统会通报你。 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
  2. 在 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#include
    sys/resource.hX$ gcc -E test.c /dev/null假如出错,表明您的富含文件受到损害了.
  3. 自身想升官PHP,作者在哪能够看到本身前几天运营的PHP
    的当场布置安装时所使用的./configure 一行的内容.?
    你能够看你安装PHP源目录下的 config.nice 文件.
    即使那几个还应该有其它一种方法.你只要不难运维 ?php phpinfo(卡塔尔(قطر‎; ?脚本.
    在出口页面包车型地铁首先行,便是 ./configure 行, 是您那个时候用来配置PHP的那行. 14.
    编写翻译带GD库的PHP时,它不是给一些奇怪的错, 便是进行时发生 segfaults
    段错误. 你必须要认同你在编写翻译 GD 库 和 PHP 时所运用同一的重视性库 (比方libpngState of Qatar.

模块的花色:

骨干模块

专门的学业模块

其三方模块

行使apxs编写翻译安装模块

先是查看已经安装过mod_so模块了没

httpd -M

选用apxs来开展编写翻译安装模块

安装mod_txt模块

cd /usr/local/src

wgethttp://apache.webthing.com/mod_txt/mod_txt.c

/usr/local/apache2/bin/apxs -c -i -a     mod_txt.c

l然后改进配置文件,并在httpd.con文件中的合适岗位增添如下指令

AddOutputFilter  text-filter    .txt

AddType text/html       .txt

TextHeader      /path/to/header-file

TextFooter      /path/to/footer-file

再重启服务器,就能够用了

运用静态链接模块

编写翻译时直接内定 ./configure –enable-modules=most

就一句话,编写翻译时内定静态链接的模块。再make && make install

编写翻译好就足以用了

选用动态链接模块

动态链接模块的应用格局

先是查看已经设置过mod_so模块了没

httpd -M

如若想选择有些动态链接的模块

Apache2.X

要在httpd.conf里加

LoadModule vhost_alia_module modules/mod_vhost_alias.so

LoadModule ssl_module modules/mod_ssl.so

才算启用模块

PS:LoadModule只好加载Apache的根目录的模块,要想加载其余路径的模块,须要用LoadFile换LoadModule

.老版本里DSO模块装入的依次决定了Apache使用它们管理UWranglerL的次第

Apache 1.3.X动态链接模块的施用方法

必须要先用LoadModule将其加载,然后使用AddModule来启用

PS:在此个版本里,即使是静态编写翻译的模块也亟需用AddModule指令来启用。

为Apache增多新模块

心怀坦白的感到用yum install -y
php可以一向把php那一个模块动态加载到Apache中,没什么副功能。副功能是会重新安装三个rpm包的apache。把php动态加载到新装置的非常apache上去了。并不是动态安装到事情发生前的源码包上。

以DSO的章程安装PHP到Apache2.x

wget

tar zxvf 源码包的岗位

cd 源码包解压后的地点

./configure  –prefix=/usr/local/php
–with-apxs2=/usr/local/apache2/bin/apxs

make && make install

即便如此make
install会自动在Apache的httpd.conf文件中参加对php模版的调用,但要么提议检查一下httpd.conf是否加了那些内容。

2.x的apache不扶植php静态编写翻译进apache了,独有1.3.x能静态编写翻译

首先次编写翻译Apache

./configure –prefix=/usr/local/apache2

安装PHP

./configure –prefix=/usr/local/php5.4
–with-mysql=/usr/local/mysql5.0.67 –with-apache=../apache_1.3.9

make && make install

第一回编写翻译Apache

./configure –prefix=/usr/local/php5.4
–active-module=src/modules/php5/libphp5.a

make && make install

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图