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中对数据库操作的封装
Oct 09 PHP
PHP5中的this,self和parent关键字详解教程
Mar 19 PHP
php 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 PHP
laravel自定义分页的实现案例offset()和limit()
Oct 15 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
浅谈PHP中的那些魔术常量
Dec 02 PHP
PHP解决高并发问题
Apr 01 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简单系统查询模块代码打包下载
2008/06/07 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
Python中replace方法实例分析
2014/08/20 Python
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
python3访问字典里的值实例方法
2020/11/18 Python
python中pdb模块实例用法
2021/01/15 Python
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
《观潮》教学反思
2016/02/17 职场文书