當前位置:首頁 » 編程軟體 » linuxphp編譯參數

linuxphp編譯參數

發布時間: 2023-08-21 19:00:24

『壹』 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

『貳』 linux伺服器php編譯安裝成功之後,無法重新編譯安裝,怎麼辦

具體看你缺少什麼參數,一般的參數都可以通過配置文件修改的,文件路徑一般再/etc/php.ini ,如果是是缺少依賴lib的話,可以單獨編譯庫源碼 成.so文件,添加依賴文件到 php.ini 重啟就好了

『叄』 編譯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
在/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

這個問題還是庫文件的鏈接問題
解決:

1 echo /usr/local/lib > /etc/ld.so.conf.d/local.conf

2 ldconfig -v
echo /usr/local/lib > /etc/ld.so.conf.d/local.conf
ldconfig -v

讓編譯的PHP支持memcache

『肆』 linux已經安裝openssl,如何重新編譯php支持openssl模塊

下載php的源代碼,執行三步安裝就行了:
./configure
make && sudo make install
sudo make clean
就可以了,然後編輯php.ini文件加入模塊支持:
extensions=openssl.so
好了。大工告成~~~

『伍』 PHP8、FPM及部分擴展編譯安裝

本著能懶則懶的原則,之前我都是寶塔、lnmp腳本等「一鍵」
再不濟也得來個 apt/yum install php
什麼?源碼 make install ? 編譯參數一言難盡,勸退勸退...我只是想要個開發環境而已

沒關系!我來整理一下常用模塊以及參數!環境為 ubuntu/debian

檢查壓縮包的完整性,與官網 sha256比較

安裝以下包

官方的拓展分類
根據需要的模塊添加其後對應的參數

包含常用模塊,可以直接使用

編譯並安裝後
復制 php.ini 到默認目錄 /usr/local/lib/

檢查 php安裝是否正確

復制 fpm 配置文件、運行服務文件
www.conf php-fpm.conf php-fpm.service

修改 fpm 用戶和組,默認為nobody

修改服務文件,取消只讀 不然日誌不能讀寫無法啟動

設置自啟動並運行

本地起服務測試

No package 'libxml-2.0' found

No package 『sqlite3『 found

configure: WARNING: unrecognized options: –with-gd

No package 'zlib' found

No package 'libpng' found

No package 'oniguruma' found

No package 'libcurl' found

No package 'libsystemd' found

No package 'openssl' found

No package 'libzip' found

『陸』 linux 下zabbix 安裝 php.ini 里也設置了,結果重啟還是沒有變化,如下圖。

找到php的配置文件,php.ini
找到如圖這句,把前面的分號去掉就可以了,然後重啟服務

沒有在etc目錄下,是在php的文件的根目錄下面哦,

熱點內容
linux嵌入式書籍 發布:2025-02-04 03:44:07 瀏覽:331
sql分組最後一條 發布:2025-02-04 03:38:24 瀏覽:269
單宮數字奇門演算法 發布:2025-02-04 03:33:57 瀏覽:861
文件夾盒子 發布:2025-02-04 03:33:05 瀏覽:109
python教案 發布:2025-02-04 03:10:38 瀏覽:798
怎麼編程套料 發布:2025-02-04 02:50:31 瀏覽:208
副編譯 發布:2025-02-04 02:05:25 瀏覽:613
解壓按摩師 發布:2025-02-04 01:21:31 瀏覽:424
linuxssh限制 發布:2025-02-04 01:20:40 瀏覽:697
腳本式是什麼 發布:2025-02-04 01:06:24 瀏覽:248