存档

文章标签 ‘php’

PHP下编码转换函数mb_convert_encoding与iconv

2014年9月25日 没有评论

将一个短信接口代码从apache迁移到nginx+php-fpm后,发现无法发出短信了,查看php日志,

[25-Sep-2014 20:15:21] WARNING: [pool www] child 9617 said into stderr: “NOTICE: PHP message: PHP Fatal error:  Call to undefined function mb_convert_encoding() in /data/htdocs/xx.php on line 13”

发现函数mb_convert_encoding没定义,看着像某个模块没装,google了把,要装个mbstring扩展,之前都是一下装好多扩展(虽然不知道这个扩展是干啥的,按照网络文档来),现在是要应用需要哪个装哪个,逼格略有提高(至少这样能让我知道哪个模块是干啥的)。 阅读全文…

php中max_input_vars默认值为1000导致多表单提交失败

2014年9月25日 1 条评论

公司内一个php的后台管理系统,之前运行在apache上,后来我给转到nginx+php上后,其他功能运行正常,有一个修改功能提交表单后没有提交成功,查了代码没查出来什么问题,后来看了下php error日志,也没有什么线索,打印post请求后,也发现提交表单个数和正在表单个数对不上(当时怀疑过是不是某个插件是不是没装,字符集对不对等),再看了下php-fpm的日志,有点信息可以参考了。

 

提示input 变量个数超过1000,建议修改php.ini文件中的 max_input_vars,PHP从5.3.9开始增加一个变量 max_input_vars 用来限制提交的表单数量。

妈的,我这个功能(类似于phpmysqladmin功能,读取数据库表,然后能写入编辑,然后数据库字段有128个,然后每个字段有11个input框)大概有1400多个input,(多么痛的领悟,为毛这么吊,研发一个表搞这么多字段),

然后我在php.ini里面加入

重启php-fpm后,功能正常了。看日志很重要。

 

分类: PHP 标签: ,

tornado实现ansible api web请求

2014年9月23日 没有评论

这两天在写运维平台中的ansible命令执行功能,运维平台是php的,尝试了php的exec  system passthru popen等函数,ansible 里面host ssh认证改为www,apache运行用户也为www,各种尝试,最后执行结果返回为空数组,执行 ssh www@192.168.3.169 ‘df -h’这种命令也是成功的,只是执行ansible命令不行,ansible-doc也可以。 阅读全文…

分类: ansible 标签: , , ,

hhvm3.2升级到hhvm3.3

2014年9月22日 没有评论

由于hhvm 3.2 还是存在进程crash问题,然后上周hhvm3.3版本出来了,升级下

 

下面我们升级下hhvm到3.2

apt-get upgrade hhvm 阅读全文…

分类: HHVM 标签: , ,

[菜鸟学php]PHP版简单计算器

2014年5月19日 没有评论

用到的知识点

1. 三元运算

语法:条件 ? 结果1 : 结果2
说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2。

再看个例子

那么三元的表示法就是

阅读全文…

分类: PHP 标签: , , , , , , ,

[菜鸟学php] php版自定义函数实现金字塔

2014年5月13日 没有评论

54im.com php for循环例子系列文章:

1. php版简单实现99乘法表

2. php版简单实现金字塔

3. php版简单实现棋盘

4. php使用自定义函数实现99乘法表

5. php版自定义函数实现金字塔

6. php版自定义函数实现棋盘

转载请注明出处:http://54im.com


php版自定义函数实现金字塔

 

 

效果可以查看  php版简单实现金字塔-for循环

 

分类: PHP 标签: ,

[菜鸟学php] php版自定义函数实现棋盘

2014年5月13日 没有评论

54im.com php for循环例子系列文章:

1. php版简单实现99乘法表

2. php版简单实现金字塔

3. php版简单实现棋盘

4. php使用自定义函数实现99乘法表

5. php版自定义函数实现金字塔

6. php版自定义函数实现棋盘

转载请注明出处:http://54im.com


 

效果可以参考 php版简单实现棋盘-for循环+html

[菜鸟学php] php版自定义函数实现99乘法表

2014年5月13日 没有评论

54im.com php for循环例子系列文章:

1. php版简单实现99乘法表

2. php版简单实现金字塔

3. php版简单实现棋盘

4. php使用自定义函数实现99乘法表

5. php版自定义函数实现金字塔

6. php版自定义函数实现棋盘

转载请注明出处:http://54im.com


使用自定义函数方式来实现99乘法表,函数是一种可以在任何被需要的时候执行的代码块。

创建 PHP 函数:

  1. 所有的函数都使用关键词 “function()” 来开始
  2. 命名函数 – 函数的名称应该提示出它的功能。函数名称以字母或下划线开头。
  3. 添加 “{” – 开口的花括号之后的部分是函数的代码。
  4. 插入函数代码
  5. 添加一个 “}” – 函数通过关闭花括号来结束。

例子

一个简单的函数,在其被调用时能输出我的名称的:

使用 PHP 函数

现在,我们要在 PHP 脚本中使用这个函数了:

以上代码的输出:

下面我们来写用函数实现99乘法表

得到的结果和html一样。这里就不贴图了,效果是这样 php版简单99乘法表-for循环

[菜鸟学php] php版简单实现棋盘-for循环+html

2014年5月13日 没有评论

54im.com php for循环例子系列文章:

1. php版简单实现99乘法表

2. php版简单实现金字塔

3. php版简单实现棋盘

4. php使用自定义函数实现99乘法表

5. php版自定义函数实现金字塔

6. php版自定义函数实现棋盘

转载请注明出处:http://54im.com


 

 

实现这个棋盘首先我们想想棋盘是怎么样的,是有很多个方格组成,然后由黑色和白色的相间的方格组成。首先我们先把方格画出来。

得到以下结果:(是不是有点眉目了,我们现在只要把格子上颜色就可以)

php简单实现棋盘

php简单实现棋盘1

 

看到上面棋盘后,考虑下黑白格排放位置,有个规律可以发现,横排和竖排上白色格子都是基数,黑色的都是偶数,我们可以用取余的方法来判断这个格子该显示什么颜色,基数单元格我让他显示白色,偶数单元格显示黑色,基数+偶数=偶数,所以偶数单元格(黑色)我们很好找出来了。剩余的就是基数格(白色)

得到的效果是这样:

php简单实现棋盘

php简单实现棋盘

分类: PHP 标签: ,

[菜鸟学php] php版简单99乘法表-for循环

2014年5月13日 没有评论

54im.com php for循环例子系列文章:

1. php版简单实现99乘法表

2. php版简单实现金字塔

3. php版简单实现棋盘

4. php使用自定义函数实现99乘法表

5. php版自定义函数实现金字塔

6. php版自定义函数实现棋盘

转载请注明出处:http://54im.com


 

 

最近在学php,用php写个简单99乘法表,用到for循环,其实这个也可以改下放shell中。

首先了解下for循环

for 语句

如果您已经确定了代码块的重复执行次数,则可以使用 for 语句。

语法

注释:for 语句有三个参数。第一个参数初始化变量,第二个参数保存条件,第三个参数包含执行循环所需的增量。如果 initialization 或 increment 参数中包括了多个变量,需要用逗号进行分隔。而条件必须计算为 true 或者 false。

例子

下面的例子会把文本 “Hello World!” 显示 5 次:

下面再看看99乘法表这个的正序写法,要用到嵌套循环。

运行这个php得到的结果 :

php版99乘法口诀表

php版99乘法口诀表

下面想让这个乘法表倒序,其实只有for循环里面数字逐渐递减就可以。

倒序显示如下:

php简单显示99乘法表

php简单显示99乘法表

编译php5.3.6出现问题cannot open shared object file

2011年7月19日 没有评论

 

 

php-fpm启动报错:

Starting php_fpm /usr/local/webserver/php/bin/php-cgi: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory failed。

报错信息指示libmysqlclient.so.16没有找到。

进入/usr/local/mysql/lib/ 目录查看,呵呵,还真没有,只有一个libmysqlclient.so.16.0.0 。于是我建立了一个软件链接来指向libmysqlclient.so.16。

再次启动php-fpm,问题解决了。

听有些网友说问题仍然存在,那可以试试其它网友的解决方案,在/usr/lib/下建立个软链接:

 

如果不行,往下看

export LD_LIBRARY_PATH=”/usr/local/mysq/lib:$LD_LIBRARY_PATH”

加上这句后在去安装编译就ok了。

 

PHP-用户登录代码

2011年3月28日 4 条评论

1.数据库名:login 表名:woyoo
2.字段名 :name password (一共两个)
3.表单里输入框的名字分别为:name password
4.最关键了,login.php页的代码,要求:将用户在表单里填写的name以及password 与 MYSQL数据库中woyoo表中的name以及password分别进行对比,如果一致,打开test.htm页,否则,弹出对话框:密码或用户名不正确!

login.php内容如下:

以下附简单的login.htm内容

用户名

密码

   

上面是WordPress自动把代码给解析了

<html>
<body>
<form name=”login” action=”login.php” method=post>
用户名<input type=text name=”name”>
<p>密码<input type=password name=”password”>
<p>
<input name=”log” type=submit value=”登录”>
</form>
</body>
</html>

分类: PHP 标签:

Fatal error: Out of memory (allocated 解决办法

2011年3月25日 没有评论

Fatal error: Out of memory (allocated 786432) (tried to allocate 98304 bytes) in H:\freehost\zhengbao2\web\includes\lib_common.php on line 744

疑问:786432 是指786432bytes?即:768MB 98304 bytes=96MB 那0.75M是怎么算出来的。

正确答案:786432bytes=768KB=0.75MB 98304bytes=96KB=0.09MB ?

最小是位 <其次字节(byte)<KB<MB<GB<TB
一个字节 =8位
1KB=1024B(字节)
1MB=1024KB
1GB=1024MB
1TB=1024GB

千,1KB=2的10次方=1024B,
兆,1MB=2的20次方=1024*1024B=1024KB,
吉,1GB=2的30次方=1024*1024*1024B=1024MB,
太,1TB=2的40次方=1024*1024*1024*1024B=1024GB,
拍,1PB=2的50次方=1024*1024*1024*1024*1024B=1024TB,
艾,1EB=2的60次方=1024*1024*1024*1024*1024*1024B=1024PB,
泽,1ZB=2的70次方=1024*1024*1024*1024*1024*1024*1024B=1024EB,
尧,1YB=2的80次方=1024*1024*1024*1024*1024*1024*1024*1024B=1024ZB.

今天一个客户的网站出现这样的错误。程序是PHP的。经百度了一下。说明内存不足。中文件翻译的意思是:内存不足(分配786432)(尝试分配98304字节)

意思是尝试分配98MB的内存。但一般php设置为只允许给php程序分配 0.75M内存

解决办法:打开php.ini 修改memory_limit = 的这行
依照服务器配置进行调整
配置的内存使用大小修改后重启iis/apache
问题解决^^

PHP5.2.3-win32这个版本有个非常严重的bug,那就是最大内存设置成1024M,但是PHP实际返回的只有2M,经常返回下面的错误:

PHP Fatal error: Out of memory (allocated 1048576) (tried to allocate 393216 bytes)
PHP Fatal error: Out of memory (allocated 1048576) (tried to allocate 393216 bytes)
PHP Fatal error: Out of memory (allocated 1048576) (tried to allocate 393216 bytes)
PHP Fatal error: Out of memory (allocated 1048576) (tried to allocate 393216 bytes)
PHP Fatal error: Out of memory (allocated 786432) (tried to allocate 393216 bytes)
PHP Fatal error: Out of memory (allocated 1310720) (tried to allocate 393216 bytes)

这是官方的bug报告,该bug只出现于windows版本,linux版本没有这个bug。看来只能等下一次升级的时候修复了。 PHP5.2.3-win32 我的是PHP5.2.8-win32 怎么还是会偶尔出现?

分类: PHP 标签:

CentOs5.5+Apache2.2.17+MySQL5.5.8+PHP5.3.5环境搭建

2011年3月14日 1 条评论

Linux + Apache + MySQL + PHP环境搭建

友情链接:centos5.5+nginx0.8.54+mysql5.5.8+php5.3.5 最新详细安装手册

             搭建环境:CentOs 5.5 +Apache 2.2.17+MySQL5.58+PHP5.35,使用编译安装,关闭防火墙、selinux
所须软件下载:

Apache(httpd)
www.apache.org
PHP
www.php.net
CMAKE
http://www.cmake.org/files/v2.8/cmake-2.8.3.tar.gz

假定安装包都在/tmp目录。

1.使用 yum 程序安装所需开发包

不多讲出错的问题,安装了这些库文件,基本不会有出错信息了。

2.安装MySQL 5.5.8
Mysql 5.5.8需要cmake编译工具

①安装cmake

②编译安装MySQL
先检查是否安装了MySQL

③配置MySQL
添加mysql用户,如果之前安装过mysql已经存在mysql用户,掠过此步

复制mysql配置文件:

生成mysql用户数据库和表文件:

把mysql加入到系统服务中

3.安装配置Apache
1.编译安装Apache

注意:./configure –help可以查看参数,根据实际需要配置。这里的configure后面跟的目录参数,最后不要跟/,否则有的地方目录会出现//的子目录问题。
# echo $?
显示为:0,表示编译过程中没有错误,显示其它都有错 这一步后面的编译过程都会用到,如果在这出错了,就不要MAKE了。得查找原因。

#make
#make install

2.设置Apache自启动

然后

4.编译安装PHP
PHP5.3.5的bug,需要安装 autoconf为2.13版本:

php 5.3.0 在默认状态下,已经开始支持 fastcgi了,不用再费劲再写配置参数了,如果写了,会提示错误信息,这个错误也可以忽略。
# make
提示出错
/usr/local/mysql/include/mysql/my_sys.h:964:27: error: mysql/psi/psi.h: No such file or directory
/usr/local/mysql/include/mysql/m_string.h:219:26: error: mysql/plugin.h: No such file or directory
/usr/local/mysql/include/plugin.h:51:28: 错误:mysql/services.h:没有那个文件或目录
/usr/local/mysql/include/services.h:21:39: 错误:mysql/service_my_snprintf.h:没有那个文件或目录
/usr/local/mysql/include/services.h:22:37: 错误:mysql/service_thd_alloc.h:没有那个文件或目录
/usr/local/mysql/include/services.h:23:36: 错误:mysql/service_thd_wait.h:没有那个文件或目录
/usr/local/mysql/include/services.h:24:44: 错误:mysql/service_thread_scheduler.h:没有那个文件或目录
修复MySQL的BUG
# mkdir /usr/local/mysql/include/mysql
# ln -s /usr/local/mysql/include/* /usr/local/mysql/include/mysql
# vi /usr/local/mysql/include/my_sys.h
找到
#include
修改为
#include  

# vi /usr/local/mysql/include/m_string.h
找到
#include < mysql/plugin.h>
修改为
#include # vi /usr/local/mysql/include/plugin.h
找到
#include
修改为
#include
# make clean
# make
# make install

# cp /tmp/php-5.3.5/php.ini-production /usr/local/php/etc/php.ini
# vi /usr/local/apache2/conf/httpd.conf
找到,在下面添加两行
AddHandler php5-script .php
AddType text/html .php

# vi /usr/local/apache2/htdocs/test.php
输入

在ie输入主机ip/test.php能看到phpinfo信息。

分类: webapp 标签: , , ,

make: *** [sapi/cli/php] Error 1解决办法

2011年3月14日 没有评论

make: *** [sapi/cli/php] Error 1 解决办法

ext/iconv/.libs/iconv.o: In function php_iconv_stream_filter_ctor':
/home/king/php-5.2.13/ext/iconv/iconv.c:2491: undefined reference to
libiconv_open’
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
[root@test php-5.2.13]# vi Makefile在安裝 PHP 到系统中时要是发生「undefined reference to libiconv_open’」之类的错误信息,那表示在「./configure 」沒抓好一些环境变数值。错误发生点在建立「-o sapi/cli/php」是出错,没給到要 link 的 iconv 函式库参数。 解决方法:编辑Makefile 大约77 行左右的地方: EXTRA_LIBS = ….. -lcrypt 在最后加上 -liconv,例如: EXTRA_LIBS = ….. -lcrypt -liconv 然后重新再次 make 即可。

或者用另一种办法

make ZEND_EXTRA_LIBS=’-liconv’  (推荐)

ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/

上面不行,尝试下面:

没有安装
libxml2
ftp://xmlsoft.org/libxml2/libxml2-2.6.11.tar.gz
还需要关联
zlib
http://www.zlib.net/zlib-1.2.3.tar.gz

在重新编译 php
加上 –with-libxml-dir= 安装libxml2 路径

分类: linux 标签:

linux编译安装php模块json

2011年3月8日 1 条评论

这里提供在线安装方法,方便简单快捷。

下面介绍编译安装json
1.下载源文件包:

2.解压

3.进入目录

4.初始化PHP环境
phpize报错了:phpize commend not found
PHP JSON安装之前需要安装phpize

5.这个可以在yum中安装

6.如果还不能完成PHP JSON安装,说明你的编译工具有问题,安装一下就可以了

7.运行phpize
(成功了)

8.查看PHP JSON安装有没有成功

说明已经有了

9.修改php.ini
我的是在php.ini 中include一个文件夹 /etc/php.d
在这个文件中添一个json.ini

10.重启服务

11.phpinfo()中您将看到
linux中json安装

分类: PHP 标签: ,

linux下使用pear在线安装json

2011年3月8日 没有评论

json 在线安装
默认安装好php,是没有json模块的。编译安装json很麻烦,而且还得去下载安装包。这里提供在线安装方法

加载json模块

php模块json在线安装
在php测试页面中已经看到json加载了。
linux中json安装

分类: PHP 标签: ,

全新解决:PHP has encountered an Access Violation

2011年2月18日 没有评论

大概没有人在玩PHP的过程中会不曾遇到“PHP has encountered an Access Violation…”错误吧?尤其是像这种完全没有接触过Microsoft以外平台的人来说,第一次着实被吓得不轻,在花了三个小时也没解决后,差点放弃了。
习惯了Windows平台的全GUI操作模式,对于完全需要手工配置的PHP + MYSQL ,实在是不习惯。好有很多东西的原理是相同的,熟悉起来也不是太难的事情。
在尝试过PHP和MYSQL的自动安装和手动安装后,在经过不同版本的组合试验后,经典的“PHP has encountered an Access Violation…”终于不请自来,PHPMYADMIN不可用,DZ也不可用。上网一搜,同病相怜的人还真不少,而且大家都纷纷转载某位大侠的文章,我也摘抄一下吧,只是抱歉无法知道原作者是谁。
这个问题不是很好处理,困惑了很多站长非常时间了
主要出现在windows主机的服务器上。
在php官方,http://bugs.php.net/
也能够查到两三千页的报告,他们官方也是束手无策,经过了11个小版本后,还是没有彻底解决
http://bugs.php.net/search.php?cmd=display&search_for=PHP+has+encountered+an+Access&x=8&y=9
目前我提供一下这几年我维护经验,我的一些民间解决办法
第一种可能:
去掉 php中 eaccelerator 的扩展
这样做能够解决您的问题,不过可能会加重系统负担
因为eaccelerator主要是为了节省系统资源的东西
具体做法是找到php.ini
如果是我帮您配置的,一般在c:/php/php.ini或者 c:/winnt/php.ini 或者c:/windows/php.ini
去掉
zend_extension_ts=”C:\php\extensions\eaccelerator_win_xxx.dll”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”c:\temp”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
ea主要是在unix环境下开发的,但是作者忽略到windows实际上不像u主机那样,是没有u主机的那种内存共享机制的
这个bug已经提交给他们了,希望0.9.5能够解决
当然,如果您的机器这个问题不严重,建议还是保留,ea是一块非常优秀的Php缓存+加速软件
配合zo使用,将会降低系统负担 50%-80%左右,提高负载能力、速度和效率 200%左右
 

第二种可能
session_save_path 需要设定一个实际的物理路径,并且该目录需要everyone的所有权限,类似U主机的0777
 

第三种可能
c:/winnt/temp 或者 c:/windows/temp
也需要everyone的所有权限,类似U主机的0777
 

第四种可能
您的内存严重不足,查看一下,如果有问题,请加内存,最好是一次加两条
比如加1G内存,最好是加2条一模一样的512M。否则没有启用双通道,效果也很一般
 

第五种可能
ZendOptimizer和php的搭配不是很好
换个版本试试看
目前比较稳定的搭配是
php4.3.11+zo 2.5.10a
或者php4.4.1+zo 3.0 beta2
 

第六种可能
这种多属于用win2003的用户
他们在应用池中设定了限制
比如多长时间回收,最大使用内存多少等等
这些设置势必造成这个经典的php错误
木头经过数以百计的测试,敢担保问题会出现在这里。
这篇文章的作者应该具有相当丰富的经验,可惜他的这些经验目前对于我都没有帮助,也就是说以上的六种可能在我这里都不存在。
 
伴着这个问题上床睡觉,但难以入眠,反复对比这几天没有遇到此问题的各种配置,思索着可能的第七种原因。
 
出现这个问题,在我重装Windows Server 2003,全新下载php+mysql+zend并安装的环境下。服务器系统本身是肯定没有问题的,在出错的情况下,完全卸载php+mysql+zend,并换上xampp却是正常的,说明DZ没问题,并再次说明系统没有问题。
 
出错的主要是phpmyadmin和DZ,而这两者都是需要和mysql连接的,是否mysql有问题?
 
第二天早上顾不得吃早饭就查看并保存了xampp下面的phpinfo,然后重新装上昨天出问题的组合,查看phpinfo,一对比,最主要的区别就在于mysql的版本。xampp带的是5.022,我自己安装的是5.124。
 
卸载mysql5.124,重新下载一个mysql5.022装上,还是不行。再次检查phpinfo,发现mysql模块的版本仍然是5.124。
于是停止运行mysql和IIS,把mysql安装目录下面的libmysql.dll分别覆盖到php安装目录和%win%\system32下面,再重启MYSQL和IIS,问题解决!
 
感叹1:开源软件是好,但是太缺乏标准和统一性,过多的版本让人会难以适从。偶这还是WIMP,如果是真正的LAMP,版本之间的组合可能会更多,怎么选呢?
感叹2:软件并非越新越好,合适的就是最好的

分类: webapp 标签: