PHP常見的6個錯誤提示及解決方案_php技巧

來源:互聯網
上載者:User

在php開發過程中,由於不知道向誰求助而心慌意亂地判斷以為自己不適合學php。其實錯誤在每個人學習過程中都會碰到的,千萬不要妄自菲薄。很多錯誤在報錯的代碼提示中已經告訴我們了,仔細看,不會就百度。現總結一些常見的php錯誤,以共用php新人。
Php常見錯誤提示

一、Fatal error: Call to undefined function……
函數不存在,可能的原因
1、系統不存在這個函數且你也沒自訂
2、有人會問,我在別的機器上就不報錯。那是因為環境不同,這個函數在本機沒開,怎麼開?你百度函數名字,就能查到這個函數屬於哪個dll,去php.ini裡開啟。

執行個體講解:PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解決辦法

在一台處理網路支付的伺服器遷移的時候,發現不能支付。

PHP環境:
PHP版本為5.3.3
系統為Red Hat 4.1.2-54
查看apache的錯誤記錄檔,發現是加密檔案中一個函數bcmul()報錯:

複製代碼 代碼如下:
PHP Fatal error: Call to undefined function bcmul() in /php_rsa.php on line xxx

解決辦法:
使用如下命令:

複製代碼 代碼如下:
yum install php-bcmath

就安裝好了。

如果出現下面這種情況:

複製代碼 代碼如下:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.yun-idc.com
* extras: mirrors.yun-idc.com
* rpmforge: ftp.riken.jp
* updates: mirrors.yun-idc.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package php-bcmath.x86_64 0:5.1.6-40.el5_9 set to be updated
--> Processing Dependency: php-common = 5.1.6-40.el5_9 for package: php-bcmath
--> Running transaction check
---> Package php-common.x86_64 0:5.1.6-40.el5_9 set to be updated
--> Processing Conflict: php53-common conflicts php-common
--> Finished Dependency Resolution
php53-common-5.3.3-13.el5_9.1.x86_64 from installed has depsolving problems
--> php53-common conflicts with php-common
Error: php53-common conflicts with php-common
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest

就需要使用yum update 之後再yum install php53-bcmath就好了

順便瞭解了一下,bcmath這個函數是PHP數學擴充中的一個。可以使用 bcscale() 來設定全域預設的小數位元,具體用法如下:

複製代碼 代碼如下:
string bcmul ( string $left_operand , string $right_operand [, int $scale ] )

例子:

<?phpecho bcmul('1.34747474747', '35', 3); // 47.161echo bcmul('2', '4'); // 8?>

此函數在php.ini中的選項:

複製代碼 代碼如下:

[bcmath]
; Number of decimal digits for all bcmath functions.
; http://www.php.net/manual/en/bc.configuration.php#ini.bcmath.scale
bcmath.scale = 0

二、syntax error, unexpected T_STRING, expecting……
嚴重語法錯誤,例如syntax error, unexpected T_STRING, expecting ',' or ';' in F:\phpnow\htdocs\index.php on line 4
後邊標著行號,自己去檢查那一行的標點就行

如果是 第三行 echo 1 後邊沒加;,報錯會報 on line 4 ,on line 4,就是第四行

執行個體講解:

其實,這是一個非常容易解決掉的問題。在我看來,似曾相識,呵呵,最近學JavaScript可是學會了使用var聲明變數。

其實,在PHP中根本不需要使用var聲明的,但是當一個變數作為一個類的成員變數的時候,使用var還是沒有問題的。

在外部使用var就報錯Parse error: syntax error, unexpected T_VAR in...,例如我的出錯資訊:

Parse error: syntax error, unexpected T_VAR in D:\Apache2.2\htdocs\shirdrn\page\p2\pageUtil.inc on line 34

我在測試:在一個類的內部,使用一個自己定義的類對象作為這個類的成員時,出錯了。

Address類對應的address.inc代碼:

<?phpclass Address {var $road;function Address(){}function setRoad($road){$this->road = $road;}}?>

Person類及其測試代碼為person.php如下:

<?phprequire("address.inc");class Person {var $name;var $address;function Person(){}function display(){echo "Name : ".$this->name."<BR>";echo "Road : ".$this->address->road."<BR>";}}var $p = new Person();$p->address = new Address();$p->address->setRoad("Chagnchun Road");$p->name = "Shirdrn";$p->display();?>

測試輸出現異常:

Parse error: syntax error, unexpected T_VAR in D:\Apache2.2\htdocs\shirdrn\page\p2\pageUtil.inc on line 34

就是因為在person.php代碼中使用var聲明變數,PHP中是不能這樣的,只要使用“$”符號起始就表示這個字元後面的是一個PHP變數。
呵呵:-)
其它網友的補充方法:
問題解決:syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or 前兩天開始自己php之旅,做一個很普通的網站,結果我們的php是5.0版本,伺服器是4.0版本,納悶死咯。 昨天忙了一天,今天早上一來,在一篇文章發現了,解決方案。Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' ,如果有“public”,就將“public”去掉。就不會出錯,如果“public” 是定義變數的話,將“public” 改為“var”。

三、Parse error: syntax error, unexpected T_VARIABLE in XXX.php on line XXX
這條語句是PHP常見的報錯,一般是在XXX行的上一行,或者是XXX行,缺少分號。或者在雙引號中使用雙引號,且沒有轉義等等。
解決方案:找到XXX.php的XXX行,按照上面的分析,找到自己的錯誤,改正即可。
貼士:作為編程人員,要做到代碼嚴謹,思維清晰,並且細心。人非聖賢孰能無過,但盡量避免這些因為粗心出現的錯誤,這樣才能成為合格的程式員。

四、Parse error: syntax error, unexpected 'X' in XXX.php on line XXX

這條語句依然是PHP常見的報錯,報錯原因是在XXX.php的XXX行,出現了PHP無法識別的字元。常常是因為function,if等需要‘{'、‘}'的地方沒有閉合,或者在編程的時候,不小心在‘;'的後面誤打了幾個字元。
解決方案:找到XXX.php的XXX行,刪除多出的字元,添加缺少的字元即可。

五、syntax error, unexpected $end 
邏輯忘了閉合  這個報錯還有個特徵,他會提示你最後一行代碼報錯,譬如你一共30行,他就告訴你 on line 30,這時候你別檢查第三十行,你要把30行挨個,檢查一遍,看看哪個標籤沒閉合。
一共3000行,他就告訴你 on line 3000,這時候你別檢查這3000行了,如果你程式排版很亂,在3000行裡找哪個括弧是個很麻煩的事……我教你一招:ctrl+a ctrl+d alt+f4
好了,你現在可以重寫了。

另一種思路:

Parse error: syntax error, unexpected $end in script.php on line xx
調試了一會後發現產生錯誤的行是檔案中間某行
//$str .= "?>\n";
想起來了 PHP 解譯器允許的結尾標記那行還可以用單行注釋,即 //$str .= "?>\n"; 被解釋成結尾標記前有注釋,注釋的內容是 //$str .= ",而 ?> 後面的 \n"; 會被解釋作 PHP 塊外的內容按 HTML 輸出出去!結果是給 $str .= "?>\n"; 這行添加 // 成注釋後,反而多了個 ?> 的結束標記,造成原來真正的結束標記成了意料之外的(unexpected)了。
解決辦法就是直接刪掉這一行即可。
PHP 開始和結束標記所在行別寫其它東西,是個好習慣。

六、Notice:Undefined varialbe:……
這是一個比較常見的錯誤,解決方案:error_reporting調整錯誤層級,

以上就是為大家分享的PHP常見的6個錯誤提示,給大家提供了大概的解決思路和方向,希望對大家的學習有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.