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 相关文章推荐
mysql limit查询优化分析
Nov 12 PHP
php实例分享之html转为rtf格式
Jun 02 PHP
ThinkPHP分页实例
Oct 15 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 PHP
分享PHP守护进程类
Dec 30 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
php实现等比例压缩图片
Jul 26 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
php中对象引用和复制实例分析
Aug 14 PHP
php写入txt乱码的解决方法
Sep 17 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
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
ThinkPHP之getField详解
2014/06/20 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
React组件生命周期详解
2017/07/03 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
Python反射用法实例简析
2017/12/22 Python
python字典一键多值实例代码分享
2019/06/14 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
毕业生的自我评价范文
2013/12/31 职场文书
个人简历自我评价范文
2014/02/04 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
护士自我推荐信范文
2015/03/24 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android