php安装bcmath
A. 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: 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 --pes
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个错误提示,给大家提供了大概的解决思路和方向,希望对大家的学习有所帮助。
B. zabbix安装成功后,访问页面,在check of pre-requisites通不过,不知道如何去修改以让其进入下一步
这里是zabbix检查php对他的前端是否支持,你按教程把php参数设置好了,但你的php应该是部分模块没有开启,获取干脆没有安装这些模块,所有才无法通过
PHP databases support
PHP bcmath
PHP mbstring
PHP sockets
PHP gd JPEG support
PHP gd FreeType support
你或许应该尝试开启或安装这些模块
查看phpinfo()确定你是否有这些模块吧
C. linux下lamp平台下安装zabbix到了,检查安装条件时,提示 PHP bcmath no Fail PHP mbstring no Fail
#1.首先进入php的源码目录下扩展目录
cd /root/php-7.1.3/ext
#2.进入要编译的模块的目录下,这里进入bcmath
cd /root/php-7.1.3/ext/bcmath
#3.执行如下命令
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
注意:--with-php-config的路径请以你的实际路径为准!
#4.编译成功后,日志会输出bcmath.so这个文件的地址
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
#5.将上述文件添加到php.ini文件里
vi /usr/local/php/lib/php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/bcmath.so
#6.重启你的apache或nginx服务器后,再刷新页面查看是否成功。
D. ThinkPHP出现Call to undefined function bcadd怎么解决
主要是因为ThinkPHP框架程序需要用到PHPbcmath扩展,而在默认我们安装或者编译PHP的时候没有一并编译进来。
我们有两个方法解决这个问题,一来重新编译PHP,把bcmath 重新添加编译,只是这个过程需要一些时间,或者我们下载PHP源码到服务器中,然后类似前天安装soap扩展一样的单独编译enable启动。这里,老蒋选择后者。
第一、选择PHP版本进入目录
这里我看到这位网友使用的是PHP5.3.17而且在当初是从WDCP面板5.2升级的,根目录有的安装包没有删除,所以我就不要去PHP官方网站删除,直接cd进入/ext/bcmath目录。
第二、编译启动bcmath过程
代码如下
/usr/local/php/bin/phpize
./configure--with-php-config=/www/wdlinux/php/bin/php-config--enable-bcmath
make&&makeinstall
执行完毕之后,我们可以看到 :
代码如下
/www/wdlinux/apache_php-5.3.17/lib/php/extensions/no-debug-non-zts-20090626/
这样子的目录URL地址,这里记录下来,然后添加到对应的PHP版本PHP.INI文件最后一行。
代码如下
extension=/www/wdlinux/apache_php-5.3.17/lib/php/extensions/no-debug-non-zts-20090626/bcmath.so
第三、重启生效
代码如下
service httpd restart
从探针中可以看到bcmath扩展已经启动生效,安装ThinkPHP程序环境已经没有问题,网友告知已经可以解决问题,看来就是这个扩展作怪导致无法安装,与此同时,如果有缺少其他PHP扩展,也是用这个方法安装
更多问题可以去php中文网问答社区提问http://www.php.cn/wenda.html,大神在线帮你解决,希望对你有帮助
E. php常用扩展有哪些
php基本使用到的扩展有如下:
bcmath(精确数值处理)
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gettext
hash
iconv
igbinaryinotify 文件监控
json
libxml
mbstring
mhash
mysql
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis Redis缓存
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshmswoole 通信引擎
tokenizer
wddx
xml
xmlreader
xmlwriter
xslyaf YAF框架必须
zip
zlib
其中最常用的扩展有:curl date json mysql mysqli openssl pdo_mysql redis session zip等
查看当前php安装了哪些扩展,可以使用命令:php -m
F. 如何安装php的扩展bcmath
为了让网站成功运行,就需要在php中增加bcmath这个扩展(其实默认的php中已经存在bcmath扩展,但是没有安装编译)
安装php的扩展bcmath具体步骤如下(以下操作均在wdcp 2.4的环境中):
1、ssh登陆vps控制台后,进入要安装的扩展的源码目录:cd /root/lanmp/php-5.2.17/ext/bcmath
2、运行phpize,这是wdcp中的路径: /www/wdlinux/php/bin/phpize
出现如下提示:
configuring for:
php api version:
20041225
zend mole api no: 20060613
zend extension api no: 220060519
3、编译安装:
./configure --with-php-config=/www/wdlinux/php/bin/php-config
make
make install
4、增加到配置文件php.ini里
vi /www/wdlinux/etc/php.ini
在最后增加:extension=bcmath.so
5、重启服务
service httpd restart
service nginxd restart
然后就大功告成