php開發遇到的問題和錯誤(php開啟報錯)

本文目錄一覽:

北大青鳥設計培訓:PHP的幾大認知誤區?

要知道沒有任何一款編程語言是可以用來實現全部的項目的,所以才會有各種各樣的編程語言出現。

今天,廣州java課程就一起來了解一下,在大多數軟件開發工程師心目中,PHP編程開發語言都有哪些被人誤解的地方。

1.PHP是一門面向對象語言,但不是基於OOPS這是完全不正確的理解,尤其是Java程序員,他們認為PHP不是基於OOPS;但他們會發現許多面向對象的特徵,比如,接口、方法、抽象對象等。

說實話,初始版的PHP沒有太多的面向對象功能,但PHP5添加很多面向對象技術。

更重要的是,你也許會好奇,為什麼Bootstrap代碼在PHP里會變得那麼簡單,這個得歸功於PHP與OO的結合。

2.PHP無法實現特定的功能這個誤解聽起來比較模糊,但有許多開發者認為PHP不能實現內存訪問等其他功能。

但事實是,PHP是一門可擴展的語言,你只需用C或C++編寫一個擴展,進行集成就OK了。

或者,你無需創建,網上已經有成千上百個擴展可供使用,你可以根據需要,直接拿來使用。

3.PHP不安全既然你認為它是不安全的,那為何不為它編寫安全的代碼呢。

我承認,PHP里是有大量不安全的代碼,但作為程序員,我們應該盡量編寫可靠安全的代碼。

如果拿PHP與.NET進行比較,PHP肯定是失敗的。

但如果你是一個技術嫻熟的程序員,你無需安全「幫助」。

包括日常的安全問題,但如果他們的路徑是動態生成的,那你就得當心了。

當然,如果你精通所有的指令,它或許會變的更安全。

4.不適合做大型應用程序一門語言之所以能用來構建大而複雜的應用,其自身要具有一定的可靠性和高性能,而可擴展的PHP並不符合。

但是,如果你設計和開發的應用程序架構很穩定,那應用程序的性能和擴展又會有什麼問題呢?事實是,一些知名的網站都是採用PHP設計的,比如Facebook、Wikipedia、和Yahoo!等,它們都能工作的很好。

5.PHP只能用於網站開發的確,使用PHP進行網站開發是很普遍的。

但命令行接口(CLI:CommandLineInterface)可以讓應用程序運行在非Web服務器上。

雖然有些應用程序對CPU的要求很高,但通過執行PHPCLI,仍然可以採用PHP進行開發和運行。

更重要的是,如果你想使用PHP開發桌面應用程序,只需使用Windows特定擴展即可搞定。

6.開發過程緩慢對於這樣的誤解,我實在不知道是從哪裡傳出來的。

有可能你編寫的PHP代碼很凌亂、並且裏面充斥着大量的MySQL語句(它們雖然很有意義,但真不應該放在那裡)。

而事實上,PHP有大量的框架可供開發者使用,合理使用它們會達到事半功倍的效果,大大縮減開發時間。

所以,不要抱怨慢。

7.專業開發者不使用PHP關於這個誤解,坊間有各種各樣的說法,比如PHP對初學者是小菜一碟,它是為那些不想認真對待開發的人準備的等等。

當然,不得不承認,PHP在某些方面的確沒有什麼意義,但是對於這樣的誤解,真的是可笑之至。

如果這裡有許多Web應用程序都是使用PHP開發,那麼想像下,一向嚴謹的開發商卻對PHP敬而遠之,乃是完全錯誤的。

php實際開發怎麼處理錯誤

在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:

* 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 ] )

例子:

?php echo bcmul(‘1.34747474747′, ’35’, 3); // 47.161 echo bcmul(‘2’, ‘4’); // 8 ?

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

複製代碼 代碼如下:

[bcmath]

; Number of decimal digits for all bcmath functions.

;

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代碼:

?php class Address { var $road; function Address(){} function setRoad($road){ $this-road = $road; } } ?

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

?php require(“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個錯誤提示,給大家提供了大概的解決思路和方向,希望對大家的學習有所幫助。

php報錯「Parse error: syntax error」是什麼原因?

是字符串拼寫的問題,經常還會有在語句最末尾忘記加上「;」而導致的。syntax error, unexpected T_VARIABLE 是PHP開發常見的錯誤,也是最為低級的錯誤

PHP,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在服務器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,現在被很多的網站編程人員廣泛的運用。

php常見錯誤錯誤類型: 

未使用二進制上傳

代碼:Fatal error: This encoded file is corrupted. Please refer to  for further help in/webhome/****.com/web/www/index.php on line 0

數據表中缺少字段 代碼:    An error was encountered  Boka SiteEngine

數據庫錯誤 錯誤信息1054: Unknown column ‘tuijian’ in ‘where clause’ 出現錯誤的查詢信息是SELECT * FROM boka_product WHERE tuijian=1 AND classid IN (‘1′,’0’)ORDER BY id DESC LIMIT 4

服務器限制了網站使用內存的大小為8M,現在已經超過 代碼:    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 5898240 bytes)

這個是模板錯誤,header.php的529行所指出的模板,該模板的79行出錯 [code]in /webhome/***.com/web/www/header.php(529) : eval()’d code on line 79

數據庫表不存在 代碼:    An error was encountered  Boka SiteEngine1146: Table ‘test.boka_settings’ doesn’t exist SELECT value FROM boka_settings WHERE variable=’defaultstyleid’

未安裝或者數據庫的用戶名密碼錯誤代碼:    An error was encountered  Boka SiteEngine 1045: Access denied for user: ‘root@localhost’ (Using password: YES)  

開發的php擴展出現段錯誤怎麼處理

Linux下的C程序常常會因為內存訪問錯誤等原因造成segment fault(段錯誤)此時如果系統core dump功能是打開的,那麼將會有內存映像轉儲到硬盤上來,之後可以用gdb對core文件進行分析,還原系統發生段錯誤時刻的堆棧情況。這對於我們發現程序bug很有幫助。

使用ulimit -a可以查看系統core文件的大小限制;使用ulimit -c [kbytes]可以設置系統允許生成的core文件大小。

ulimit -c 0 不產生core文件

ulimit -c 100 設置core文件最大為100k

ulimit -c unlimited 不限制core文件大小

步驟:

1、當發生段錯誤時,我們查看ulimit -a (core file size (blocks, -c) 0)並沒有文件,

2、設置 :ulimit -c unlimited 不限制core文件大小

3、運行程序 ,發生段錯誤時會自動記錄在core中 (php -f WorkWithArray.php)

4、ls -al core.* 在那個文件下(-rw——- 1 leconte leconte 139264 01-06 22:3 1 core.2065)

5、使用gdb 運行程序和段錯誤記錄的文件。(gdb ./test core.2065)

6、會提哪行有錯。

很多系統默認的core文件大小都是0,我們可以通過在shell的啟動腳本/etc/bashrc或者~/.bashrc等地方來加入 ulimit -c 命令來指定core文件大小,從而確保core文件能夠生成。

除此之外,還可以在/proc/sys/kernel/core_pattern里設置core文件的文件名模板,詳情請看core的官方man手冊。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/248637.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:28
下一篇 2024-12-12 13:28

相關推薦

發表回復

登錄後才能評論