PHP Fatal error:  Call to undefined function session_is_registered() in
Fatal error: Call to undefined function session_register() in

听说是有安全问题,容易被猜中,so,这个函数已经被废弃了。。。
一、检查php.ini里面register_globals=是否设置为on。或者是直接使用session_start();然后用$_session[],取值。
二、将session_register("autonum");变成$_SESSION["autonum"];就可以解决旧版本转换新版本
这个直接用国内的也成,实践OK:
http://tieba.baidu.com/p/3086275811

一、wordpress博客最近变慢之解决(fonts.google.com)

进入wordpress后台管理,选择“外观”,再选择“编辑”。
在右边,选择“模板函数(functions.php)”

注意:多个模板时有一个下拉:
模板
模板函数(functions.php)

然后在左边的编辑框内,查找googleapis.com
然后按如图的方法注释掉这行。
然后再点“更新文件”
好了,就完成了。
需要注意的是,这样操作后,你查看博客文章的源码,还是可以看到fonts.googleapis.com的引用那行。
但是只要退出管理员登录wordpress后,就可以看到,源码里,已经没有这行了。

来自:http://blog.csdn.net/metababy/article/details/28892173

二、Wordpress 只能将修改保存到可写的文件。参见Codex文档以了解更多。

使用wordpress的朋友都知道wordpress博客程序后台有个主题编辑器,是让我们方便的在后台直接编辑修改主题源文件用的,小简觉得这个功能很实用也很方便!
小简用nginx服务器装wordpress的时候,在这个wordpress网站后台主题编辑器的使用上遇到了点问题!可以确定wordpress数据完整搬移!
像以前,小简在wordpress后台使用主题编辑器修改完代码后下面有一个“更新文件”的按钮!我们只要点一下这个按钮,修改的内容就可以保存了。
小简把网站数据搬到服务器后,在wordpress后台主题编辑器里修改了一些源码,改完后想就去点击“更新文件”按钮,却发现更新按钮不见了,在原来那个地方找不到那个按钮了!(如图)
--------------------------------------------------------------------------------
原来显示“更新文件”的那个位置变成了“文档:函数名(下拉框)“查询”按钮,下面还有一行字“只能将修改保存到可写的文件。参见 Codex 文档以了解更多。”
--------------------------------------------------------------------------------
权限
现在小简面临的问题是,wordpress后台主题编辑器里编辑好的代码,无法保存?
出现问题当然要解决了,这个问题其实很简单,涉及到了权限问题,记得小简曾经分享过pureftpd新建FTP账户无法管理文件(没有权限)的解决方法,同样的权限问题!
在之前小简已经分享过lnmp搭建WordPress博客后台不能显示所有主题和无法编辑主题的问题的解决方法,这个算是小简遇到的第二个关于wordpress后台主题编辑器的问题。。。
解决方法很简单,我们ssh使用命令:
查看源代码打印帮助1 chown www:www -R /home/wwwroot/www.jannn.com/
其中/home/wwwroot/www.jannn.com/这个是古月小简博客的目录路径,你需要改成你自己网站的!然后刷新下,后台主题编辑器就可以恢复正常了!
关于目录属主和属组修改代码解析
chown www:www -R /home/wwwroot/www.jannn.com/
命令中第一个www为UID,第二个www为GID, -R递归
UID是拥有者ID(User ID)也就是用户ID
GID就是群组ID(Group ID)
Linux系统中的所有文件/文件夹都有拥有者ID和群组ID,即UID和GID.
一般从一个服务器迁移应用程序到另一个服务器时将需要更改文件/文件夹的所有者.
如果你之前服务器上文件/文件夹所有者为root,如果我们没有更改文件/文件夹的所有者,那么使用ftp账户执行操作(比如写入)就不能正常操作!同样,Wordpress等程序也无法正常上传附件,在wordpress后台主题(插件)编辑器中对源文件做了修改也如法写入保存。
代码中利用chown指令将目录的所有权限指派为www用户及www组

来自:http://www.jannn.com/1356.html
背景:作为swoole项目的顾问,平时工作时间很少看QQ群里如此有系统讲到swoole的热重启实现,特转载。
阅读全文
前面不成立,后面就不运行了,解决这个问题很简单如:

这样就很好的解决这个问题了。
来自:http://www.111cn.net/phper/31/46438.htm

Notice: Undefined offset 的解决方法,
在PHP 5.3.5中出现Undefined offset: 0的解决方法:
http://blog.csdn.net/jallin2001/article/details/6644194

附带:
解决phpmyadmin安装过程中Notice: Undefined offset: 以及Function eregi() is deprecated 的报错信息:
http://jackxiang.com/post/7028/

解决办法:在php.ini里面设置error_reporting = E_ALL & ~E_NOTICE,error_reporting 不能有分号,有分号表示不使用这个设置。如果有多个error_reporting,以最后一个为准。 操作后,问题解决。
; error_reporting
;   Default Value: E_ALL & ~E_NOTICE
;   Development Value: E_ALL | E_STRICT
;   Production Value: E_ALL & ~E_DEPRECATED

;   E_ALL & ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.)
;   E_ALL & ~E_NOTICE | E_STRICT  (Show all errors, except for notices)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
;   E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.)

   这问题很常出现在数组中的,程序是能正确地运行下去,但是在屏幕上总会出现这样的提示:Notice: Undefined offset: ….. 网上普遍是采用抑制其显示的方法,即更改php.ini文件中error_repoting的参数为”EALL & Notice “,这样屏幕就能正常显示了.
问题是解决了,但是总想不透offset:接下去的数字(如 Notice: Undefined offset: 4 ….)是什么意思.还有,句子里的语法明明是正确的,为什么会出现警告.冷静地思考了好几遍并尝试了每种可能
终于找到了答案.offset:接下去的数字是出错的数组下标,一般是超出了数组的取值范围,如定义了数组$A[]有10个元数,如果出现了$A[10]就会出现错误(Notice: Undefined offset: 10 ….),因为数组的下标是从0开始的,所以这个数组的下标就只能是0~9.因此在出现这类问题时,不要急于用抑制显示的方法(更简单的可以在当前文件的最前面加上一句”error_reporting(填offset:接下去的那个数字);,一定要注意你所用的数组下标,仔细思考一下,问题一定会很快得到解决的 !发也有可能是unset数组后再尝试读取其内容,php手册中有:

$array[1] ='www.111cn.net';
echo $array[0] ;
输入结果是
Notice: Undefined offset: 1 in D:wwwrootwraskseo404.php on line 5 下面我们来看解决办法
解决这个问题很简单如

echo isset($array[0])?$array[0]:'数组未定义';
这样就很好的解决这个问题了。
来自:http://www.111cn.net/phper/31/46438.htm

实践如下:

---------- 调试PHP ----------
数组未定义
输出完成 (耗时 4 秒) - 正常终止


来自:http://wenwen.sogou.com/z/q309347664.htm
背景:装了个php,说是现在apc和ea都不行了,这个叫opcache的比较牛x,来处:http://www.laruence.com/2013/11/11/2928.html
一、不同,就是不一样:
不同于APC, O+除了是Opcodes Cache以外, 还做了很多的Opcodes优化, 这个PPT就是主要列举了一下主要的优化们.
也不同于eacc, O+做的优化更多一些.
这个特性, 就使得O+要比APC快不少, 从Benchmark来看(Zend/bench.php), O+能节省5%的CPU IR, 能快7%以上.
另外就是, 随着Opcache进入PHP源代码树, APC我们也就不在做更新了, 主要的精力都迁移到了O+的进一步开发上.
所以, 建议大家都切换O+吧(支持5.2 到最新的5.5). 基本上只需要改一个配置, 你就能得到性能提升, 何乐而不为呢? 是吧.

二、在哪儿才能下载得到呢?
http://pecl.php.net/package/ZendOpcache

三、一个Opcache的推荐配置:
[opcache]
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so
opcache.enable_cli=1
opcache.memory_consumption=128 ;共享内存大小, 这个根据你们的需求可调
opcache.interned_strings_buffer=8 ;interned string的内存大小, 也可调
opcache.max_accelerated_files=4000 ;最大缓存的文件数目
opcache.revalidate_freq=60 ;60s检查一次文件更新
opcache.fast_shutdown=1 ;打开快速关闭, 打开这个在PHP Request Shutdown的时候
// 会收内存的速度会提高
opcache.save_comments=0 ;不保存文件/函数的注释


[Zend Opcache]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
;opcache end
背景:买了个vps云主机,安了一个lnmp,发现nginx启动后,其没法访问,通过curl又能访问,但22端口又可以使用,原来是防火墙给挡住了,so,得让防火墙给打开这个80端口可以访问,方法如下。
阅读全文
背景:PHP探针里有一个:服务器实时数据(CPU型号 [4核] ...)  网络使用状况(eth1 :  已接收 : 1.03612 GB  已发送 : 0.20958 GB) 这个是肿实现的?
阅读全文
背景:群里讨论的,我也没用过,一搜索以前我也贴过类似的:http://jackxiang.com/post/7226/  ,先记下吧。
http://XX.XX.com/group/456/articles/show/134097  (应该是来自某大公司内网做了改造。)
这是我们之前对pb4php做的改造
1.补充了sint32、sint64和fixed32等常用数据类型的支持
2.增加了DebugString调试函数支持。

阅读全文
背景:新窗口打开下载页时出现Firefox第一次会提示拦截。

window.open() 可谓是 弹窗广告的利器, 不过因为浏览器的拦截机制越来越完善, 打开几率也越来越低了.
之前在百度上看到很多种写法,如:
    通过 js 去触发某按钮的click事件
    通过 js 去触发某form的submit事件,并且form的target 设置为_blank
    不过经过我的测试,发现都已经不再兼容了于是想到了下面这个办法:



加入关闭功能:

其中用到的原理就是
通过用户真实的点击 触发window.open() 打开一个新窗口(因为是真实的用户行为,浏览器会认为是用户意愿,不会进行拦截)
然后再通过js去更改新窗口的 location

来自:http://www.phplover.cn/post/480.html


原理:
window.open是javascript函数,该函数的作用是打开一个新窗口或这改变原来的窗口,不过一般用来的是打开新窗口,因为修改原来的网页地址,可以有另一个函数,那就是window.location,他可以重定向网页地址,使网页跳转到另一个页面。

我现在要说的是window.open函数的几个使用策略,一般情况下,如果你直接在js中调用window.open()函数去打开一个新窗口,浏览器会拦截你,认为你将弹出广告等用户不想得到的窗体,所以如果不想让浏览器拦截你,你可以将这个函数改为用户点击时触发,这样浏览器就认为是用户想访问这个页面,而不是你直接弹出给用户。

所以常用的方法就是在超链接里加入onclick事件,如<a href="javascript:void(0)" onclick="window.open()"></a>这样用户点击这个超链接,浏览器会认为它是打开一个新的链接,所以就不会拦截。

可是有时候我们会遇到想要弹出一个窗口,可是却是在onckick事件执行后,才去弹出来的,这时就会被浏览器拦截,我们可以通过下面的方法来避免,就是先用window.open打开一个窗口,然后修改地址。如var tempwindow=window.open('_blank');打开一个窗口,然后用tempwindow.location='http://www.baidu.com';使这个窗口跳转到百度,这样就会呈现弹出百度窗口的效果了。

方法二:
由于在使用window.open时,在很多情况下,弹出的窗口会被浏览器阻止,但若是使用a链接target='_blank',则不会,基于这一特点,自己封装了一个open方法:

实践OK代码如下所示:

调用方式如下:
<input type="button" id="btn" value="向东博客" onclick="openwin('http://jackxiang.com');" />
php 一行行读取文本文件:


PHP获取文件行数:
背景:
下面是获取文件的行数的方法:
一个文件如果知道有几行的话,就可以控制获取一定的行数的数据,然后放入数据库。这样不管的读取大文件的性能,还是写入数据库的性能,都能得到很大的提高了。
下面是获取文件的行数的方法

接下来好操作了吧?
以下的程序主要是每次最大入库1000条,余数不足1000的就入余数。
入库10W条数据时间也才几秒,所以说性能是大大滴的好的。


如果你还有更好的操作文件的方法,或者是更好的入库的方法,可以联系我,我们交流下。

来自:http://www.redyun.net/technology/101.html
原创:http://blog.csdn.net/spring21st/article/details/8439172
http://www.wenlingnet.com/index.php/172/
使用PHP将大文件导入到数据库中:
http://www.love4026.org/313613/%E4%BD%BF%E7%94%A8php%E5%B0%86%E5%A4%A7%E6%96%87%E4%BB%B6%E5%AF%BC%E5%85%A5%E5%88%B0%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%AD/
背景:在虚拟主机域名里安装dokuwiki,出现:Parse error: syntax error, unexpected $end, expecting ',' or ';' in /home/jackxiang/domains/jackxiang.com/public_html/wiki/inc/html.php on line 1082  ,但是自己的测试机用的apache里没有这个问题,Nginx下也没有这个问题,查了下,原来是虚拟主机没有打开:short_open_tag:short_open_tag  On  On 。
PHP报错:Parse error: syntax error, unexpected $end, expecting T_FUNCTION in...
The error may caused by a missing curly bracket in PHP script coding. Beside, it may also caused by error in PHP coding in class definition, as in PHP, a class definition cannot be broke up and distributed into multiple files, or into multiple PHP blocks, unless the break is within a method declaration.



首先要检查是不是缺少了PHP脚本的结束标记, "?>" 或者缺少了 ";"或者是“}”;还有一个原因是一个PHP类的代码不能在多个文件或者多个PHP块。
原来Parse error 提示一般是 语法错误,使用了开放的标签,语句没有结束 也就是编程基本的一些错, 比如没注意 语句结束加 ";" 或者 if(){...} 后面忘了"}"  ;〈?php...?〉忘了“?〉”。仔细检查代码,果然是一处漏掉了“}”,修改程序正常运行.
But more commonly, the error is often caused by the use of Short Open tags in PHP,
To use short open tags, it must be enabled in PHP.INI. Search for short_open_tag in PHP.INI, and change the value to On. The line should look line:

short_open_tag = On


如果没有错,则:
其实更多的也是最主要的是因为使用了<? ?>的简写标签,这就需要在PHP.ini中开启短标签,设置方法是打开php.ini,找到short_open_tag = Off,修改为short_open_tag = On。
short_open_tag  On  On
来自:http://hi.baidu.com/luoziding/item/e34dc12d25c0ba9fb6326369
背景:下了一个新浪微博的PHPSDK,里面有<?=$a?>输出,但是我用的wamp套件输出不了,换成echo就能输出来。

php <?= > 问题
$i = o;<?= $i ?>为什么输不出来结果呢?换成echo就能输出来,我很奇怪,是不是我的配置文件没配好,请大家帮帮我!谢谢

在php.ini文件中设置short_open_tag为on即可,但是不建议使用这种简短风格的写法!
规范写法:<?php echo $i; ?>
————————————————————————————————————
解决方法:

wamp默 认有2个地方
; - short_open_tag = Off [Portability]
short_open_tag = Off
当 在wamp里php里勾选short open tag时,这两个地方都变成On
需要改2个地方吗?验证ing
; - short_open_tag = Off [Portability]
short_open_tag = On 不行,重启也不行
; - short_open_tag = On [Portability]
short_open_tag = On 不行,重启也不行
把 php里的short open tag勾选了,才行,php.ini都是On,其他并未改变,难道还有别的文件?
搜索发现有2个 php.ini
C:\wamp\bin\php\php5.2.8
C:\wamp\bin\apache\Apache2.2.11\bin
现 在wamp里勾选,apache文件夹里的ini变成2个on,php文件夹里的还是off。
使用phpinfo查看,最终证明只有 C:\wamp\bin\apache\Apache2.2.11\bin\php.ini里的一个short_open_tag = On管用,而且编辑文本不会使wamp的勾选变化。

要在PHP文件中的PHP.INI文件改了才起作用.

摘自:http://hi.baidu.com/123123la/item/e84c431eb823f9fe65eabf98

实践如下:
打开wamp后,在任务栏里左键,找到PHP项,后在PHP-》PHP设置里的short open tag勾选上。
short_open_tag = On //如只编辑php.ini的文本不会使wamp的勾选变化。
背景:
Linux 下的权限比较起Windows是个问题,但它保证了其安全性,Cache 会出现 chmod(): Operation not permitted 这个讯息。查看 cache 目录应该是 PHP 以 safe mode 执行的关系,所以没办法建出 777 权限目录。
php -i|grep safe_mode
safe_mode => Off => Off
—————————————————想办法以try catch实现抓权限———————————————————————————
问:PHP在Linux下以www运行为了确保你要读取的WEB页面可以访问,如何才能获得文件的相关属性?
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用请参阅手册。
来自:http://jingyan.baidu.com/article/bea41d4346a1b2b4c51be6a1.html

文件:fileowner.php

运行:
php fileowner.php
48
48是谁?
vi /etc/passwd 找48即可,是www,如下:
www:x:48:48::/home/www:/sbin/nologin

更多函数一块写:
文件:fileInfo.php

运行情况:
文件拥有者id:48
文件属组id:48
文件权限值:0644

更多PHP手册函数:
http://www.wapm.cn/phpdoc/zh/function.fileperms.html
http://www.w3school.com.cn/php/func_filesystem_filegroup.asp
http://www.w3school.com.cn/php/func_filesystem_fileowner.asp

php异常捕获try catch实例解析:
http://www.jbxue.com/article/10331.html

—————————————————以try catch实现对其权限不够的不活并写入日志—————————————————
permitted.php

这块故意给它一个root权限,chown -R root permitted.php
去执行和写的权限:chmod a-xw permitted.txt
在web下运行结果,tail -f /tmp/logPermissionFile4My.txt   :
DateTime:2014-03-25 13:23:22
Error on line 7 in /data/htdocs/tools.jackxiang.com/fileowner.php, ErrorException[Warning]:chmod():Operation not permitted
文件拥有者id:0
文件属组id:0
文件权限值:0444
js detect image 404:
一、用Ajax,代码量较长:

二、用图像的onerror函数实现判断404,实践OK:
_________________________________________________________________________


来自:http://forums.mozillazine.org/viewtopic.php?f=25&t=315570



Hello All,

can do this either by Jquery or Javascript...


来自:
http://www.coderanch.com/t/624410/HTML-CSS-JavaScript/check-url-returns-error-status
Percona MySQL 升級 5.6 後, PHP 的 mysql_connect() 就出現下述警告(Warning)訊息:
PHP Warning:  mysql_connect(): Headers and client library minor version mismatch. Headers:50531 Library:50613 ...
Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50153 Library:50613 in /data/htdocs/jackxiang.com/libraries/database/mysqlrw.php on line 271
要如何解決?

实践Ok步骤及注意点:
第一点:出现这种情况的可能性必定是因为这个Linux不是纯净的Linux,里面以前有rpm,或低版本的Mysql安装,如何解决之:
第一步:干掉所有的mysql相关的rpm包:
rpm -qa | grep -i mysql | xargs rpm -e --allmatches --nodeps
第二步:是干掉所有相关mysql的各种通过源码安装的安装包及动态库:
find /usr -name "mysql" -exec rm -rf {} \;
find /usr -name "my*" -exec rm {} \;
这下一下子就清静了。
注意点:
1)有可能出现你是干掉了,但是你再安装时还是出现上述错误,为何:
这涉及到有可能关于编译make的问题,makefile如果你颠倒了(也就是你先编译后,再去删除mysql,重新编译(没有clean掉生成的so,.a),因为之前编译的还在,它引用的还是原来的那个mysql header,依旧不行滴。),为此,你得先干死mysql,php,然后是把它们的目录挪动到加上-bak的,如:mysql-bak。
2)把源码包删除掉,重新tar 解压出一份目录,mysql再cmake,php再进行./configure。当然,如果通过make clean能清完,也可以不用删除再重新解包,我是直接删除,再完全重新编译。
总之,不能让先前安装好的包,先前编译的源码包里沾染上原来旧版本的mysql包,这才是核心,否则,编译出来问题依旧,达不到想要的目的。阅读全文
背景:输出xml提示:error on line 323 at column 23: Input is not proper UTF-8, indicate encoding !<username><![CDATA[*这儿有一个隐藏字符*執↘著]]></username>,去掉就好了,但是这个是用户的输入。

RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法:
This page contains the following errors:
error on line 402 at column 25: Input is not proper UTF-8, indicate encoding !
Bytes: 0×07 0×43 0×68 0×61
Below is a rendering of the page up to the first error.

搜索一下,说是内容中有不完整的utf8字符导致xml解析器出错。

根据提示的错误位置,把附近的文字复制到Emeditor中,那个隐藏的不完整字符出现了,Emeditor中是用一个大黑点表示的,删除后把文本复制回去,搞定。
上面这个不是长久办法,最后一老外有一篇文章:
http://www.mybelovedphp.com/2009/07/03/fix-broken-utf8-encoded-rss-feeds-in-php/



分页: 11/26 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]