編譯問題_PHP教程
這章節蒐集了許多編譯時會產生的錯誤狀況。 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@這樣的標號。 它說不能找到 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=/
打入: make 然後: make install 編譯PHP,拷貝必須的檔案到Apache目錄下。
改變到你的 /
打入: ./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 S_SHLIB = ' '; # substituted via Makefile.tmpl如果你看到的是這樣,那麼問題就出在這裡. 因為值裡包含的是空格或其它不正確的值, 如'q()'. 把它樣變成像下面的那樣:
my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmplmy $CFG_LD_SHLIB .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. undeclared identifier 是 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. 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).

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如果您在使用印表機時遇到錯誤訊息,例如操作無法完成(錯誤0x00000771),可能是因為印表機已中斷連線。在這種情況下,您可以透過以下方法解決問題。在本文中,我們將討論如何在Windows11/10PC上修復此問題。整個錯誤訊息說:操作無法完成(錯誤0x0000771)。指定的印表機已被刪除。修正WindowsPC上的0x00000771印表機錯誤若要修復印表機錯誤操作無法完成(錯誤0x0000771),指定的印表機已在Windows11/10PC上刪除,請遵循下列解決方案:重新啟動列印假脫機

目錄解決方法一解決方法二一、刪除Windows更新的臨時檔案二、修復受損的系統檔案三、檢視並修改登錄項目四、關閉網卡IPv6五、執行WindowsUpdateTroubleshootor工具進行修復六、關閉防火牆和其它相關的防毒軟體。七、關閉WidowsUpdate服務。解決方法三解決方法四華為電腦Windows更新出現「0x8024401c」報錯問題現象問題原因解決方案仍未解決?最近web伺服器因為系統漏洞需要更新,登入伺服器之後,更新提示錯誤碼0x8024401c解決方法一

在Linux下更新curl版本,您可以按照以下步驟進行操作:檢查目前curl版本:首先,您需要確定目前系統中安裝的curl版本。開啟終端,並執行以下指令:curl--version該指令將顯示目前curl的版本資訊。確認可用的curl版本:在更新curl之前,您需要確定可用的最新版本。您可以造訪curl的官方網站(curl.haxx.se)或相關的軟體來源,尋找最新版本的curl。下載curl原始碼:使用curl或瀏覽器,下載您選擇的curl版本的原始碼檔案(通常為.tar.gz或.tar.bz2

標題:分析Oracle錯誤3114:原因及解決方法在使用Oracle資料庫時,常常會遇到各種錯誤代碼,其中錯誤3114是比較常見的一個。此錯誤一般涉及資料庫連結的問題,可能導致存取資料庫時出現異常狀況。本文將對Oracle錯誤3114進行解讀,探討其造成的原因,並給出解決該錯誤的具體方法以及相關的程式碼範例。 1.錯誤3114的定義Oracle錯誤3114通

顯示錯誤是在香香腐宅app中可能會出現的問題,有些用戶還不太清楚香香腐宅app為什麼顯示錯誤,可能是網絡連接問題、後台程序過多、註冊信息錯誤等問題,接下來就是小編為使用者帶來的app顯示錯誤解決方法的介紹,有興趣的使用者快來一起看看吧!香香腐宅app為何顯示錯誤答案:網路連線問題、後台程式過多、註冊資訊錯誤等詳情介紹:1、【網路問題】解決方法:檢視裝置連線網路狀態,重新連線或選擇其他網路連線使用即可。 2.【後台程式過多】解決方法:關閉正在運作的其他程序,釋放系統,可以加快軟體的運作。 3、【註冊資訊錯

LinuxOops:詳解這一錯誤的含義,需要具體程式碼範例什麼是LinuxOops?在Linux系統中,"Oops"指的是核心出現了一個嚴重的錯誤導致系統崩潰的情況。 Oops實際上是一種核心崩潰的機制,它會在發生致命錯誤時停止系統運行,並列印相關的錯誤訊息,以便開發者對問題進行診斷和修復。 Oops通常發生在核心空間中,與用戶空間的應用程式無關。當內核遇到
![串流媒體伺服器拋出錯誤[修復]](https://img.php.cn/upload/article/000/465/014/171133083740341.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
你得到的串流媒體伺服器在你的電腦上拋出了一個錯誤嗎?Stremio是一個跨平台的視訊串流服務,你可以使用它來串流媒體和觀看電影、電視節目、直播電視等。一些用戶報告說,在嘗試啟動應用程式時出現此錯誤。錯誤可能在多種情況下出現,包括網際網路和伺服器問題。使用Stremio的web版本時也可能遇到此錯誤。防毒軟體或防火牆的干擾也可能導致錯誤發生。無論何種情況,您都可以根據本指南來修復這個問題。當串流媒體伺服器拋出錯誤在Windows上執行Stremio應用程式時,可能會遇到「Stremio串流媒體伺服器拋出錯誤
![腳本化診斷本機主機已停止運作[修復]](https://img.php.cn/upload/article/000/465/014/171012105385034.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
在執行程式或進行故障排除時,如果出現指示腳本診斷本機已停止運作的錯誤訊息,這可能是由於多種原因引起的。在Windows11/10PC上修復這個問題可能需要不同的方法,因為每台電腦的情況可能不同。常見的原因是腳本程式本身有錯誤或損壞,導致其無法正常運作。解決這個問題的方法可能包括修復或重裝腳本程序,或嘗試使用其他版本的腳本程序。另一個可能的原因是系統檔案損壞或缺失,這可能會影響腳本的運作。在這種情況下,您可以嘗試執行系統文件檢查工具來修復任何受損的文件,或進行系統復原以恢復到之
