導航:首頁 > 源碼編譯 > 編譯安裝php723報錯

編譯安裝php723報錯

發布時間:2023-08-18 04:54:13

php程序編譯中常見錯誤信息及解釋

編寫程序時 無論怎樣小心謹慎 犯錯總是在所難免的 這些錯誤通常會迷惑PHP編譯器 如果開發人員無法了解編譯器報錯信息的含義 那麼這些錯誤信息不僅毫無用處 還會常常讓人感到沮喪 編譯PHP腳本時 PHP編譯器會盡其所能報告它遇到的第一個問題 這樣就產生一個問題 只有當錯誤出現時 PHP才能將它識別出來(本文後面對此問題進行了詳細描述) 正是由於這個緣故 編譯器指出出錯的那行 從表面上看來可能語法正確無誤 或者可能是根本就不存在的一行!更好地理解錯誤信息可以大大節省確定並改正錯誤內容所花費的時間 因此 在本文中 我將努力闡明多種不同類型的PHP報錯信息 以及在開發過程中如何正確理解各種報錯信息的含義 本文中所講述的內容與您所應用的PHP的版本無關 因為本文所描述的各種錯誤並不限定於某一特殊版本的特定錯誤 另外我們假定您是一位初級或者中級程序員 並已經從事編程工作有半年或一年的時間 編譯器的工作方式要搞清楚編譯器為什麼會報告某一行上存在錯誤 首先必須明確編譯器解析PHP代碼的機制 我並不打算在本文中對此進行詳細論述 但是 我們將會討論一些更易於引發錯誤的簡單概念 變數聲明如果在一條語句中聲明一個變數 具體方式如下所示 $variable = value ;編譯器首先求出語句右半部分的值(即等號右邊的所有內容) 在一些編程書籍中 將此表示為語句的 RHS (右半部分) 恰恰正是語句的這一部分常常會引發錯大逗誤 如果使用的語法不正確 就會出現解析錯誤 解析錯誤Parse error:解析錯誤 unexpected T_WHILE in c://program files//apache group//apache//htdocs//script php on line 每次確定了前一錯誤時 解析錯誤一個接一個地不斷出現 因為PHP在第一個解析錯誤之後就停止執行腳本 調試並糾正這一系列的錯誤往往會讓人覺得特別厭煩 而且 解析錯誤具有很少的信息 幾乎不報告錯誤所在的行號 具體原因就是當出現錯誤時 編譯器判定好幾行的語法看起來應該是有效的 直至遇到無效的語法 最可能的情形就是表達式中使用了預定義的字詞 例如;while = ; // Bad ? while 就是一個預定義字詞 不能分配給一個值預定義的字詞包括 while function等 如果PHP使用 uses to evaluate your code 您不能使用這些預定義字詞來命名變數 而且如果您非要這樣做的話 PHP就會報出更多的慎胡錯誤 這是您無法忍受 關於這個問題 下面的示例可能會對您有所幫助 請咨詢閱讀一下下面所示的PHP 代碼 $b = somevalueif($b == somevalue){print Hello world!;}?>錯誤位於$b =一行(在語句的末端缺少分號) 所以錯誤應該是解析錯誤:第 行缺少分號對吧?而不應該依據解析器判定的 Parse error: parse error unexpected T_IF in c://program files//apachegroup//apache//htdocs//ereg php on line 在第 行 if() 語句的語法是正確的 那麼 編譯器是被什麼給搞糊塗了呢?線索就是unexpected T_IF 部分 出現 unexpected T_???錯誤時 它所表示的含義為 編譯器發現在預定義字不應該出現的位置出現 T_IF 代表 if() T_WHILE 代表 while() T_FOR 代表 for()等 值得慶幸的是 一些錯誤的原因也很簡單 語句沒有使用分號(;)結束 比如上面的示例 字元串中缺少引號 其他一些常見的錯誤我見過的最常見的錯誤就是 當沒有使用大括弧( } )結束一個函數或者一個循環時出現的錯誤 這很可能是最常見 最讓人煩的錯誤 具體代碼如下滾孝賣 function UselessFunction() {for($i < ; $i < ; $i++){}將產生下列錯誤 Parse error: parse error unexpected $ in c://program files//apachegroup//apache//htdocs//ereg php on line 由於函數 UselessFunction 沒有使用大括弧( } )來結束 PHP編譯器不斷查找表示結束的大括弧直至到達文件末尾為止 因為編譯器未找到一個匹配的大括弧 就會報告文件末尾處有錯誤 如果正確地反映了代碼的層次結構 錯誤信息就會變得非常明顯 如果沒有標明代碼的層次結構 那麼最後要想查清楚到底忘記了什麼也會變得幾乎是不可能的 所以 請記住 一定要標明代碼的層次結構 Tab鍵可以很容易地實現這一點 對後續的開發人員來說 把握代碼框架並對其進行修改也會更容易一些 MySQL 錯誤另一極其令人討厭的錯誤信息就是最常見的MySQL錯誤 這常常使 PHP新手感到頗為頭疼 Warning: Supplied argument is not a valid MySQL result resource in 上面所報告有錯的一行可能是 while($row = mysql_fetch_array($result)) {參數 $result並不是一個有效的資源 在英語中它表示因為查詢失敗 將無法處理mysql_fetch_array 任一查詢的語法無效(您應該將查詢復制 粘貼到MySQL 控制台參考來進行測試) 或者與資料庫的連接失敗(這種情況下您應該再次檢查用戶名和口令等) 防止錯誤發生第一步 智能代碼器可採取以下幾步來消除下列錯誤出現 · 在每一條語句的末尾處 不必考慮添加分號——這應該成為一種習慣 · 總是要盡可能標明代碼的層次結構 這可以使您能夠查看是否忘記在if 調用或函數末端等位置添加大括弧 · 請使用可突出顯示語法的編輯器(如 HTML Kit) 有了這類編輯器的輔助 您就能確定是否忘記了添加引號 是否缺少分號等 lishixin/Article/program/PHP/201311/21338

㈡ PHP7.2 安裝openssl擴展報錯問題。(centos7.7)

試試重新安裝看可行
刪除舊版本:yum remove -y openssl openssl-devel 源碼安裝openssl需要perl環境編譯,如果沒有perl環境還是需要安裝:yum -y install perl perl-devel
1.下載源碼包
wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
2.解壓源碼包並進入解壓後的目錄:
tar zxf openssl-1.0.2l.tar.gz
cd openssl-1.0.2l
3.配置並編譯安裝:
./config -fPIC --prefix=/usr/local/openssl/ enable-shared && make && make install
注釋:

--prefix:指定安裝目錄
-fPIC:編譯openssl的靜態庫
enable-shared:編譯動態庫
4.加入環境變數,以便方便使用openssl命令
echo "export PATH=$PATH:/usr/local/openssl/bin" >>/etc/profile
source /etc/profile
5.將庫文件路徑寫入/etc/ld.so.conf文件中,方便調用庫文件
echo "include /usr/local/openssl2/lib" >> /etc/ld.so.conf
ldconfig
6.查看openssl命令路徑:
which openssl
/usr/local/openssl/bin/openssl
查看版本號:
openssl version -a

㈢ php 7.3 /usr/bin/ld: cannot find -liconv 編譯一直報這個錯.vim Makefile 也添加過-liconv還是報錯

首先,你要檢查系統是否安裝了libiconv,數喊沒如果已安裝了最新版本,此步忽略;
第二,如果還是報錯,可能libiconv.so庫文件找不到引起的,編譯php時,使用如下薯納命令:
1、滲羨sh> make ZEND_EXTRA_LIBS='-liconv'
2、修改配置:
sh> cat /etc/ld.so.conf
sh> include ld.so.conf.d/*.conf
sh> echo "/usr/local/lib" >> /etc/ld.so.conf
sh> ldconfig
3、sh> make install

㈣ 編譯安裝PHP7.2.3報錯

只是提示你PEAR配置文件位置,應該是安裝成功了你試試

/usr/local/php/bin/php-v

㈤ 編譯PHP提示出錯找不到libc-client.無法編譯PHP怎麼辦

I. 安裝devel庫
yum install pam-devel libc-client libc-client-devel -y
如果使用了yum安裝了libc-client,那麼在以後編譯參數--with-imap=/usr/local/php-imap中的路徑應該刪除,即--with-imap。
如果這樣還不能解決,那麼就需要手動編譯imap2007f了!
II. 手動編譯imap2007f
腳本取自 http://forum.directadmin.com/showthread.php?t=45434
在/usr/src目錄下運行以下腳本,將會在/usr/local/php-imap目錄下生成imap需要的庫
#!/bin/sh
# Script for PHP-IMAP installation. 0.1b
# Written by Martynas Bendorius (smtalk)
CWD=`pwd`
OS=`uname`
#Is it a 64-bit OS?
B64=0
B64COUNT=`uname -m | grep -c 64`
if [ "$B64COUNT" -eq 1 ]; then
B64=1
LD_LIBRARY_PATH=/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
fi
if [ ! -e /usr/include/krb5.h ] && [ -e /etc/redhat-release ]; then
echo "Installing krb5-devel"
yum -y install krb5-devel
fi
VERSION=2007f
PROTOCOL=ftp
URL="${PROTOCOL}://ftp.cac.washington.e/imap/imap-${VERSION}.tar.Z"
FILENAME=imap-${VERSION}
TARBALL=${FILENAME}.tar.Z
echo "Downloading ${TARBALL}..."
wget -O ${TARBALL} ${URL}
tar xzf ${TARBALL}
cd ${FILENAME}
echo "Installing ${FILENAME}..."
if [ ${OS} = "FreeBSD" ]; then
if [ ${B64} -eq 0 ]; then
make bsf
else
make bsf EXTRACFLAGS=-fPIC
fi
else
perl -pi -e 's#SSLDIR=/usr/local/ssl#SSLDIR=/etc/pki/tls#' src/osdep/unix/Makefile
perl -pi -e 's#SSLINCLUDE=\$\(SSLDIR\)/include#SSLINCLUDE=/usr/include/openssl#' src/osdep/unix/Makefile
perl -pi -e 's#SSLLIB=\$\(SSLDIR\)/lib#SSLLIB=/usr/lib/openssl#' src/osdep/unix/Makefile
if [ ${B64} -eq 0 ]; then
make slx
else
make slx EXTRACFLAGS=-fPIC
fi
fi
echo "Copying files to /usr/local/php-imap"
mkdir -p /usr/local/php-imap/include
mkdir -p /usr/local/php-imap/lib
chmod -R 077 /usr/local/php-imap
cp -f c-client/*.h /usr/local/php-imap/include/
cp -f c-client/*.c /usr/local/php-imap/lib/
cp -f c-client/c-client.a /usr/local/php-imap/lib/libc-client.a
cd ..
rm -rf ${FILENAME}
if [ -d /usr/lib/x86_64-linux-gnu ] && [ ! -d /usr/kerberos/lib ]; then
mkdir -p /usr/kerberos
ln -s /usr/lib/x86_64-linux-gnu /usr/kerberos/lib
fi

exit 0;
III. 開始編譯
下面是編譯PHP的參數,如果出現問題,請參考編譯PHP5.6 和 PHP編譯錯誤的解決辦法。
./configure --prefix=/usr/local/php --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --enable-ftp --with-imap=/usr/local/php-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --disable-fileinfo
IV. 其他問題
在本次編譯中,老高又遇到了幾個怪事
set --enable-opcache=no
configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
這個問題還是庫文件的鏈接問題
解決:
echo /usr/local/lib > /etc/ld.so.conf.d/local.conf
ldconfig -v
讓編譯的PHP支持memcache

㈥ 求助,Linux系統安裝php,報錯!

請用 ./configure 還有就是你那一堆換行連接符 有問題 ,./configure 是autoconf 生成的一個對應不同的環境進行配置的一個shell 文件,如果你還是報錯,那麼檢查你後面with的那一堆php擴展的依賴,一般你with 那麼多是安裝不過的 。

㈦ centos7編譯php出現問題 系統:CENTOS7 64位 PHP版本:7.1.0 APACHE版本:2.4.25 MYSQL版

1、php的編譯問題主要是依賴包沒有提前安裝
2、如果依賴mysql,就先安裝mysql-devel或編譯mysql
3、需要提前安裝的有,不能寫太細,太細會被度娘屏蔽:
yasm-1.3.0.tar.gz
libmcrypt-2.5.8.tar.gz
libvpx-v1.3.0.tar.bz2
tiff-4.0.3.tar.gz
libpng-1.6.16.tar
freetype-2.5.4.tar.gz
jpegsrc.v9a.tar.gz
libgd-2.2.3.tar.gz
t1lib-5.1.2.tar.gz
4、安裝編譯php
5、安裝php後有一些優化包根據需要安裝

閱讀全文

與編譯安裝php723報錯相關的資料

熱點內容
at89c51編程器 瀏覽:341
項目經理叫醒程序員 瀏覽:342
autocad旋轉命令 瀏覽:660
手機版wpsoffice怎麼打包文件夾 瀏覽:579
在成都學車用什麼app 瀏覽:818
grep命令管道 瀏覽:426
java修改重啟 瀏覽:567
單片機供電方案 瀏覽:770
airpodspro一代怎麼連接安卓 瀏覽:218
豌豆莢app上有什麼游戲 瀏覽:283
公路商店app標簽選什麼 瀏覽:339
linuxoracle命令行登錄 瀏覽:227
android深度休眠 瀏覽:173
php微信開發例子 瀏覽:846
醫得app登錄密碼是什麼 瀏覽:142
spring開發伺服器地址 瀏覽:412
伺服器上如何查看伺服器的埠 瀏覽:678
單片機伺服器編譯 瀏覽:770
單口usb列印機伺服器是什麼 瀏覽:859
戰地五開伺服器要什麼條件 瀏覽:956