背景:
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/



背景:外包对下一个客户端的MD5值里的字母是大小写敏感,说道:你的md5怎么给成大写的了?之前不是给的小写的?我是想问一下你们 这个值确定是大写还是小写 还是不确定?我的回答是:我想说的是你得兼容。

C++也有PHP这样的类似函数:http://www.zedwood.com/article/cpp-strtoupper-function
Continuing on with our efforts to replicate the php string manipulation with C++ and the STL, I have implemented strtoupper() and strtolower();


由于PHP所提供的md5()函数返回的密文中的英文字母全部都是小写的,因此我们可以把它们全部转为大写,然后再进行一次MD5运算。


来自:
http://zhidao.baidu.com/question/54522503.html
http://www.oschina.net/code/snippet_59519_2946
PHP去除连续的空格和换行符:
http://www.zzsky.cn/build/content/1538.htm

php:去掉多余的空行:
http://blog.sina.com.cn/s/blog_a3b9b9040101gvb5.html

今天用到basename 函数获取文件名称时,发现如果是中文的文件名返回只有后缀的空文件名(如:.pdf)
    string basename ( string path [, string suffix] )
    说明
    给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。

方法一:按照网站上找到说法是此函数依赖于区域设置,如果是多字节名称返回为空可以通过setlocale函数如下设置



最好是修改服务器的区域设置来整体解决!


来自:http://www.vtcrm.cn/2011/01/27/vtigercrm%EF%BC%9Alinux%E4%B8%8B%E9%9D%A2phpbasename%E4%B8%8D%E6%94%AF%E6%8C%81%E4%B8%AD%E6%96%87%E7%9A%84%E8%A7%A3%E5%86%B3/


方法二:php自带的basename函数不支持中文,下面这个方法是最简单的实现。


http://www.thinkphp.cn/code/75.html
背景:写了个shell出现,killed,最后发现原来是shell名和C的二进制名一样的,加参数 -x后发现是shell一起来把shell自己给杀死了,出现:killed的情况。
于是得过滤掉shell的sbin路径就好了:ps aux|grep xiyouHttpInterfaceAnalyse|grep -v grep|grep -v sbin|awk '{print $2}'
结果:

—————————————————————————————————————————————————————
法一:

[root@test ~]# nohup /data/htdocs/tools.xiyou.cntv.cn/http_pcap_codes/xiyouHttpInterfaceAnalyse >>  /dev/null  2>&1 &                      
[1] 18274
[root@test ~]# AA=`ps aux|grep MyHttpInterfaceAnalyse|grep -v grep|awk '{print $2}'`;
[root@test ~]# echo $AA;
18274
或法二:





来自:http://bbs.chinaunix.net/thread-1664631-2-1.html
清理VPS上eaccelerator_cache的缓存内容及设置背景:
有时测试机也好线上也好,代码变了,smarty缓存、memcache缓存都删除了,运行代码也是最新的,但就是不变,这时有可能会考虑到删除eaccelerator_cache。
阅读全文
背景:PHP以WWW权限运行,想通过它执行svn相关命令,出现问题,可以用PHP调用C实现SVN更新的由www到root的参考实践来自:http://u-czh.iteye.com/blog/1565744
一、C代码实现SVN命令的传递,特别是实现权限的更换:
resetServerAndOptSVN.c

二、PHP代码如下:
resetServerAndOptSVN.php

三、shell执行make成二进制文件并root更换的授权:
gcc -o resetServerAndOptSVN  -Wall resetServerAndOptSVN.c                                                                                                    
chmod u+s  resetServerAndOptSVN #需要手工在shell下执行
chmod -R 777 resetServerAndOptSVN

阅读全文
背景:是哪个高人,给我sql注入了,我看了下面这篇文章,但没看明白,请在留言里指出,Thanks。
http://blog.csdn.net/phpfenghuo/article/details/18178519
_____________________________________________________________________________
一、我试着想关闭bo-blog里的评论功能(以防止注入):
如何关闭Bo-blog评论及留言部分的地址和邮箱栏

修改当前模板的elements.php文件,推荐用editplus。
1、查找并删除以下两处。
{replieremail}
{replierhomepage}
2、查找到
{$lnc[170]} <input name="v_repurl" id="v_repurl" type="text" size="12" class="text" value="{repurl}" />
{$lnc[248]} {if_neednopsw_end}{additional}<input name="v_repemail" id="v_repemail" type="text" size="12" class="text"  value="{repemail}" />
将其中两处type=”text”改为type=”hidden”,并去掉{$lnc[170]}和{$lnc[248]}{repurl},{repemail},及{if_neednopsw_end}{additiona }。


附:去掉密码栏的方法
修改当前模板的elements.php文件,查找到
{$lnc[133]} <input name="v_password" id="v_password" type="password" size="12" class="text"  value="{ password}" {disable_password}/> {$lnc[247]}
去掉:{$lnc[133]} 和 {$lnc[247]}还有{password},将type=”password”改为type=”hidden”

参考资料:http://www.18hao.net/archives/611
_____________________________________________________________________________
二、但是想了一下,有可能是通过[ubb]注入的,于是先打一下补丁,暂不关评论:
http://www.bo-blog.com/weblog/security--notice-20110312/
2.1.1正式版用户请下载附件中的补丁程序,解压后上传、覆盖原先的文件。打完补丁后,请检查后台页脚的版本号是否为2.1.1.3626.3。

三、修改登录密码:
      后台->用户管理->用户管理->搜索自己的用户名->找到后再修改一下密码混入数字字母大小写符号等即可。


Bo-Blog SQL注入漏洞

Bo-Blog是一套基于PHP和MySQL的免费博客系统软件,该软件包括留言本、表情、天气等。本周,该产品被披露存在一个综合评级为“高危”的SQL注入漏洞。由于程序未能正确过滤用户提交的输入,攻击者利用漏洞可控制应用程序,访问或修改数据。目前,互联网上已经出现了针对该漏洞的攻击代码,厂商尚未发布该漏洞的修补程序。CNVD提醒广大用户随时关注厂商主页以获取最新版本。

参考链接:http://www.cnvd.org.cn/flaw/show/CNVD-2013-12867
               http://www.cnvd.org.cn/webinfo/show/3289
背景:在Linux进行socket等编程,或对某些应用telnet时会出现直接quit退出无反应的情况,折腾了半天还没有退出telnet,于是有一个退出回话的键至关重要。
很简单:ctrl+],然后再输入q就可以退出了。.
root@192.168.137.128:~# telnet  localhost 1987
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
你好
。。。//无反应
quit  //也无法退出

^]  //此时的退出方法:ctrl + ] 回车
telnet>
quit  //退出会话了,再quit即可退出,也可直接输入q简写。
telnet> quit
Connection closed.




来自:http://www.cnblogs.com/hnrainll/archive/2012/02/04/2337928.html
参考:
http://blog.csdn.net/wei801004/article/details/4531664
http://www.baidu.com/link?url=qvpA6iPv82k_sInhXaU6hSCj45rQAQDfhmnNqZXhOduSeGwtk2yRu4H_Ee0zXMWT
近来公司某个域名流量大涨,发现一个外部QQ登录的接口经常失败,用户登录总是不成功。经过排查发现是登录的第一步需要保存一个token_secret。当时的程序员编写此代码时直接用了$_SESSION来保存token_secret。这里在并发量小时问题不大,并发大了之后极有可能会出问题。

假设A,B两个请求同时出发,A,B同时session_start,读取到了一个$_SESSION的值。当A完成请求写入$_SESSION,但B还没有完成请求,B完成请求后再写$_SESSION,就会覆盖A所设置的值。

类似的数据同步问题其实很多的,比如file_put_contents写PHP的Cache文件,如果不加LOCK_EX就可能会存在同步问题,当一个进程写file时,只写到一半有另外的进程去require此文件,这时就会因为文件不完整,导致PHP语法错误。所以涉及到同时读写同一个文件或数据时一定要加锁,否则在高并发的情况下会产生严重错误。

来自韩天峰兄弟的博客:http://rango.swoole.com/archives/74
http://blog.chinaunix.net/uid-380521-id-2412387.html
背景:群里有兄弟问PHP到底有几种运行模式,想在apache下运行fastcgi来运行PHP,guisu写的博客是4种,百度知道里采纳的是5种。
一、百度知道:
php一共分为五大运行模式:包括cgi 、fast-cgi、cli、isapi、apache 模块的 DLLCGI
CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。阅读全文
打开zend for eclipse 10.5时报了个错:
failed to create the java virtual machine

google了一下,解决的办法如下:

找到zend目录下的ZendStudio.ini,配置为如下内容:
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120913-144807
--launcher.XXMaxPermSize
126m
--launcher.defaultAction
openFile
-showlocation
-name
Zend Studio
-vmargs
-Xms256M
-Xmx512M
-XX:MaxPermSize=512m
-DGIT_SSL_NO_VERIFY=true
-Dsvnkit.http.sslProtocols=SSLv3


说明:PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)等这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。

-Xms128m
表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。

-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配
过小会导致:java.lang.OutOfMemoryError: PermGen space
背景:在做项目时常常因JS太多太长,导致如:取cookie时偶出现XXX is not defined(获取不到这人cookie函数XXXX),我想如果能知道Js的一行处理方式,可能会有一下程序的深入理解后,再编码可能会好一些。

脚本处理模型
javascript的基本特点
脚本处理模型
源码处理
函数解析
代码执行
脚本处理模型
javascript的基本特点
js是一门相当简单的运行时解释语言。
对象模型很直接也没有类的概念。
有自动垃圾回收。
弱数据类型。
动态类型(dynamic typing):运行的时候才确定对象的类型。
javascript没有内置的I/O机制。
扩展:javascript程序与宿主环境进行交互,是通过一系列预定义的方法和属性实现的,这些方法和属性会再映射成浏览器的内部原生代码,所以与其他很对常规的编程语言不同,浏览器开放的这些借口往往受限且有针对性。
脚本处理模型
首先,无论是独立的窗口还是在框架里面,每个展示在浏览器里面的html文档,都被赋予了一个独立的javascript执行环境实例,在这个环境里面加载的脚本的所有全局变量和函数都拥有一个独立的命名空间。
然后,同一个文档的所有脚本都运行在同一个执行环境里面,共享同一个沙箱,并且能够通过浏览器提供的API与其他上下文环境交互。
最后:在特定的执行上下文里面,每段javascript代码块都是自成体系处理的,顺序也基本确定。每段代码块都是由若干符合语法格式的独立单元组成,处理的过程包括清晰而且连续的三个步骤:源码处理,函数解析,代码执行。
源码处理
源码处理阶段会检查脚本代码块里面的语法,通常会先把代码转换成中间层的二进制映像,这样才能或得到令人满意的执行速度。在彻底完成这一步骤之前,这些二进制代码对全局并无影响。如果源码处理阶段出错,整个有问题的代码块都会被弃用;然后解析器会继续处理下一段代码块。
函数解析
完成了上一步骤之后,接下来就是解析器对当前代码块里所有具名的全局函数进行识别并注册。在这一阶段完成之后,这些函数才能被执行代码所调用。
对于代码

点击在新窗口中浏览此图片
因为javascript在执行前会额外预处理,因此上面的写法会成功执行。
而对于代码
阅读全文
For some reason however I expected it to behave like `mkdir -p` on the command line which succeeds if the directory already exists.




上面来自PHP手册老外的回复:
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f7216695c7150888c40e8e3b081d0035bda66f780d5094992d215af2154bea87692b615860a09bbfca109fafd7756fde28762a5e9141638c40f9900632c151875a9fb81897f8&p=882a9543d2b112a05afcc665540883&newp=8b2a9712a49111a058eb9029164ccb231610db2151d1d11128a6c1&user=baidu&fm=sc&query=PHP+mkdir+-P&qid=&p1=1

下面来自网友没实践:
http://hi.baidu.com/hevensun/item/d28a0c08c68d98e0ff240d85
阅读全文
昨天还是好的,最后修改了下-Xms125为256好像就好了,奇怪:
ZendStudio.ini  -Xms256M好了。
背景:Set Cookie时出现两个相同的cookie的key和一样value值 送出,用Cookie::delete('language1');出现第一个给删除了,第二个送出,删除了会在浏览器上提示:值为”deleted”, 过期时间为 Thu, 01-Jan-1970 08:00:01 CST 或者说是 Thu, 01-Jan-1970 00:00:01 GMT
看实现:

上面用的是NULL,于是找到一篇文章讲这个的:
php setcookie时value为null或空字符串,会删除此cookie:
http://www.zhaokunyao.com/archives/4346
陸 一鳴<lu.yiming@outlook.com>  下午 04:11:38
https://gist.github.com/luxixing/7411156
PHP5.3向更高版本迁移的内容基本写完了
感兴趣的看看,有不足之处请在下面的评论反馈,
我会尽量完善
有些内容如果需要优化示例或者新增示例的话也反馈下

https://gist.github.com/luxixing/7411156
分页: 7/18 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 下页 最后页 [ 显示模式: 摘要 | 列表 ]