PHP常见的6个错误提示及解决方法


Posted in PHP onJuly 07, 2016

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

例子:
<?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.

; 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代码:

<?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 相关文章推荐
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
PHP闭包(Closure)使用详解
May 02 PHP
dedecms中使用php语句指南
Nov 13 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
curl和libcurl的区别简介
Jul 01 PHP
PHP编程基本语法快速入门手册
Jan 07 PHP
thinkphp3.x中变量的获取和过滤方法详解
May 20 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
PHP符合PSR编程规范的实例分享
Dec 21 PHP
总结PHP内存释放以及垃圾回收
Mar 29 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
php生成mysql的数据字典
Jul 07 #PHP
php自定义函数实现JS的escape的方法示例
Jul 07 #PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 #PHP
PHP使用自定义方法实现数组合并示例
Jul 07 #PHP
PHP记录和读取JSON格式日志文件
Jul 07 #PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 #PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
Jul 07 #PHP
You might like
文章推荐系统(二)
2006/10/09 PHP
php实现的RSS生成类实例
2015/04/23 PHP
PHP中的session安全吗?
2016/01/22 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
document.documentElement的一些使用技巧
2013/04/18 Javascript
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
与UNIX有关的几个名词
2015/09/17 面试题
青年教师培训方案
2014/02/06 职场文书
幼儿园优秀教师事迹
2014/02/13 职场文书
爱我中华教学反思
2014/04/28 职场文书
信息员培训方案
2014/06/12 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
总经理聘用协议书
2015/09/21 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
详细介绍python类及类的用法
2021/05/31 Python
Linux安装apache服务器的配置过程
2021/11/27 Servers