PHP常见的6个错误提⽰及解决⽅法
在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
* extras: mirrors.yun-idc
* rpmforge: ftp.riken.jp
* updates: mirrors.yun-idc
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 updatederror parse new
--> 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.
; www.php/manual/figuration.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_,例如我的出错信息:
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个错误提⽰,给⼤家提供了⼤概的解决思路和⽅向,希望对⼤家的学习有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论