编译问题_PHP教程

Jul 21, 2016 pm 04:10 PM
tanpa nama keadaan Versi terkini kod sumber daripada menyusun kesilapan soalan


这章节搜集了很多编译时会产生的错误情况。 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 行增加一些额外的信息 并且重运行 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). 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/314067.htmlTechArticle这章节搜集了很多编译时会产生的错误情况。 1. 我用匿名CVS得到最新版的源代码包, 但没有配置脚本文件! 2. 我在配置 PHP 在 Apache下工作时...
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1657
14
Tutorial PHP
1257
29
Tutorial C#
1231
24
Tidak dapat menyelesaikan operasi (Ralat 0x0000771) Ralat pencetak Tidak dapat menyelesaikan operasi (Ralat 0x0000771) Ralat pencetak Mar 16, 2024 pm 03:50 PM

Jika anda menemui mesej ralat semasa menggunakan pencetak anda, seperti operasi tidak dapat diselesaikan (ralat 0x00000771), ini mungkin kerana pencetak telah diputuskan sambungan. Dalam kes ini, anda boleh menyelesaikan masalah melalui kaedah berikut. Dalam artikel ini, kami akan membincangkan cara membetulkan isu ini pada Windows 11/10 PC. Keseluruhan mesej ralat berkata: Operasi tidak dapat diselesaikan (ralat 0x0000771). Pencetak yang ditentukan telah dipadamkan. Betulkan 0x00000771 Ralat Pencetak pada Windows PC Untuk membetulkan Ralat Pencetak operasi tidak dapat diselesaikan (Ralat 0x0000771), pencetak yang ditentukan telah dipadamkan pada Windows 11/10 PC, ikut penyelesaian ini: Mulakan semula Print Spool

Penyelesaian kepada ralat segera Windows Update Ralat 0x8024401c Penyelesaian kepada ralat segera Windows Update Ralat 0x8024401c Jun 08, 2024 pm 12:18 PM

Jadual Kandungan Penyelesaian 1 Penyelesaian 21. Padamkan fail sementara Windows Update 2. Membaiki fail sistem yang rosak 3. Lihat dan ubah suai entri pendaftaran 4. Matikan kad rangkaian IPv6 5. Jalankan alat WindowsUpdateTroubleshooter untuk membaiki 6. Matikan firewall dan perisian anti-virus lain yang berkaitan. 7. Tutup perkhidmatan WidowsUpdate. Penyelesaian 3 Penyelesaian 4 Ralat "0x8024401c" berlaku semasa kemas kini Windows pada komputer Huawei Gejala Masalah Punca Penyelesaian Masih tidak diselesaikan? Baru-baru ini, pelayan web perlu dikemas kini kerana kelemahan sistem Selepas log masuk ke pelayan, kemas kini menggesa kod ralat 0x8024401c

Tutorial mengemas kini versi curl di bawah Linux! Tutorial mengemas kini versi curl di bawah Linux! Mar 07, 2024 am 08:30 AM

Untuk mengemas kini versi curl di bawah Linux, anda boleh mengikuti langkah di bawah: Semak versi curl semasa: Pertama, anda perlu menentukan versi curl yang dipasang dalam sistem semasa. Buka terminal dan laksanakan arahan berikut: curl --version Perintah ini akan memaparkan maklumat versi curl semasa. Sahkan versi curl tersedia: Sebelum mengemas kini curl, anda perlu mengesahkan versi terkini yang tersedia. Anda boleh melawati tapak web rasmi curl (curl.haxx.se) atau sumber perisian yang berkaitan untuk mencari versi terkini curl. Muat turun kod sumber curl: Menggunakan curl atau penyemak imbas, muat turun fail kod sumber untuk versi curl pilihan anda (biasanya .tar.gz atau .tar.bz2

Mentafsir ralat Oracle 3114: punca dan penyelesaian Mentafsir ralat Oracle 3114: punca dan penyelesaian Mar 08, 2024 pm 03:42 PM

Tajuk: Analisis Ralat Oracle 3114: Punca dan Penyelesaian Apabila menggunakan pangkalan data Oracle, anda sering menghadapi pelbagai kod ralat, antaranya ralat 3114 adalah yang biasa. Ralat ini biasanya melibatkan masalah pautan pangkalan data, yang mungkin menyebabkan pengecualian apabila mengakses pangkalan data. Artikel ini akan mentafsir ralat Oracle 3114, membincangkan puncanya dan memberikan kaedah khusus untuk menyelesaikan ralat dan contoh kod yang berkaitan. 1. Definisi ralat 3114 ralat Oracle 3114 lulus

Mengapa apl Xiangxiangfuzhai memaparkan ralat? Mengapa apl Xiangxiangfuzhai memaparkan ralat? Mar 19, 2024 am 08:04 AM

Ralat paparan ialah masalah yang mungkin berlaku dalam apl Xiangxiang Fuzhai Sesetengah pengguna tidak pasti mengapa apl Xiangxiang Fuzhai memaparkan ralat Ia mungkin disebabkan oleh masalah sambungan rangkaian, terlalu banyak program latar belakang, maklumat pendaftaran yang salah, dll. Seterusnya, Ini pengenalan editor tentang cara menyelesaikan ralat paparan aplikasi untuk pengguna yang berminat harus datang dan lihat! Mengapa apl Xiangxiang Fuzhai memaparkan jawapan ralat: masalah sambungan rangkaian, terlalu banyak program latar belakang, maklumat pendaftaran yang salah, dll. Butiran: 1. [Masalah rangkaian] Penyelesaian: Semak status rangkaian sambungan peranti, sambung semula atau pilih sambungan rangkaian lain ke guna. 2. [Terlalu banyak program latar belakang] Penyelesaian: Tutup program lain yang sedang berjalan dan lepaskan sistem, yang boleh mempercepatkan berjalannya perisian. 3. [Maklumat pendaftaran salah

Linux Oops: Penjelasan terperinci tentang maksud ralat ini Linux Oops: Penjelasan terperinci tentang maksud ralat ini Mar 21, 2024 am 09:06 AM

LinuxOops: Penjelasan terperinci tentang maksud ralat ini, memerlukan contoh kod khusus Apakah LinuxOops? Dalam sistem Linux, "Oops" merujuk kepada situasi di mana ralat serius dalam kernel menyebabkan sistem ranap. Oops sebenarnya adalah mekanisme ranap kernel yang menghentikan sistem apabila ralat maut berlaku dan mencetak maklumat ralat yang berkaitan supaya pembangun boleh mendiagnosis dan membetulkan masalah. Oops biasanya berlaku dalam ruang kernel dan tiada kaitan dengan aplikasi ruang pengguna. Apabila kernel bertemu

Ralat pelayan Apache: Fail PHP tidak ditemui Ralat pelayan Apache: Fail PHP tidak ditemui Mar 23, 2024 pm 03:42 PM

Ralat pelayan Apache: Fail PHP tidak ditemui Semasa proses membina tapak web, anda sering menghadapi ralat pelayan Apache. Salah satu masalah biasa ialah apabila mengakses fail PHP, pelayan menggesa ralat bahawa fail PHP tidak dapat ditemui. Masalah ini mungkin berlaku disebabkan oleh fail konfigurasi yang salah, laluan fail yang salah, atau beberapa sebab lain. Dalam artikel ini, kami akan meneroka perkara yang mungkin menyebabkan ralat ini dan memberikan contoh kod khusus untuk menyelesaikan isu tersebut. Analisis Masalah Apabila kita menyemak imbas

Hos asli diagnostik skrip telah berhenti berfungsi [DIBETULKAN] Hos asli diagnostik skrip telah berhenti berfungsi [DIBETULKAN] Mar 11, 2024 am 09:37 AM

Apabila menjalankan program atau penyelesaian masalah, jika anda mendapat mesej ralat yang menunjukkan bahawa localhost diagnostik skrip telah berhenti berfungsi, ini mungkin disebabkan oleh beberapa sebab. Membetulkan isu ini pada PC Windows 11/10 mungkin memerlukan pendekatan yang berbeza, kerana situasi setiap komputer mungkin berbeza. Satu sebab biasa ialah skrip itu sendiri adalah buggy atau rosak, menghalangnya daripada berjalan dengan betul. Penyelesaian kepada masalah ini mungkin termasuk membaiki atau memasang semula skrip, atau mencuba versi skrip yang berbeza. Punca lain yang mungkin ialah fail sistem rosak atau hilang, yang mungkin menjejaskan operasi skrip. Dalam kes ini, anda boleh cuba menjalankan alat semakan fail sistem untuk membaiki mana-mana fail yang rosak, atau melakukan pemulihan sistem untuk memulihkan kepada yang sebelumnya.

See all articles