最近公司需要通过web界面修改squid.conf,然后保存配置文件的同时重启动squid,web服务器是nginx+php,文件用户和组都是www。
首先编辑 /etc/sudoers 使用 visudo来编辑
/etc/sudoers的权限是440:
-r–r—– 1 root root 3248 Oct 18 23:47 /etc/sudoers
需要chmod u+w /etc/sudoers
修改完毕之后再chmod -w /etc/sudoers
因为如果/etc/sudoers的权限不是440,那么sudo会报错:
[root@hn ~]# sudo
sudo: /etc/sudoers is mode 0640, should be 0440
sudo: no valid sudoers sources found, quitting

在最下面添加一行

nobody ALL=NOPASSWD:/usr/local/squid/sbin/squid -k reconfigure

然后注释掉文件中的Defaults requiretty这行
否则会出现sudo: sorry, you must have a tty to run sudo的错误
保存退出即可
测试
写一个php文件,内容如下


来自:http://tunps.com/php-sudo-root-privilege-program
背景:PHP 5.1.6,我这儿有一个需求用Nginx上传模块上传,但是发现用rename有些问题,于是修改为了:copy又可以了。
打听了一下:说是那个移动到的目标的磁盘是挂载的。

Download:
http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gz
configure and make :


在 PHP 4.3.3 之前,linux系统下rename()是无法跨分区操作的。
有人出现:
而如果在不同的分区,就会失败。不过从其它分区rename()至/tmp/临时目录可以成功,但是再rename()回来就直接提示失败。


网上也没有找到比较合适的解释与解决方案。
其中虽然有效但是感觉不太完美的是将rename()函数替换为 system("mv ".$src." ".$Dest)

这个我编写了PHP的测试脚本验证过,利用PHP内置的chmod()函数将对应的目录的权限设置为0777后,再执行rename(),错误依旧。chown()没有测试。
并且ls -al 察看对应路径的属性,已经被成功修改了。
应该可以确认是有chmod()的权限的。

实践如下:


后来,经实际测试rename不行,于是改用copy函数,并删除掉源,估计和该环境是挂载的目标磁盘有关,后发现是权限问题加上:755权限可以,究竟是什么问题无法得知:

修改为:

Ps:nginx和php都是ww权限在运行。
再试:

再加上:


move_upload_file无法移动文件。

打开错误:


问题根本原因想到想不到滴:
我都说这个rename函数怎么好像有问题哩,原来是这样:
这个rename的目标目录有一个另外的转码的程序在看护是一个daemon,一发现我这边有一个文件上传后rename过去就给转走了,于是给我测试造成一种rename函数有问题有时有(当时这个程序没有取走),有时无(一上传到这个目录刚好被这个程序给取走了),于是觉得这个rename不靠谱,实际上就是这个视频转码的程序。
有一个思路上的问题:
视频转码,我思想上是要是视频文件才转,后来才发现不用是视频文件的后缀,只要在上传时插入数据库后,所有放到那边的文件都给移走了,如果转失败也是在转码那边删除,造成这个目录不可能有一个文件存在,就是.exe的.dll的也会移走,问题得到了解决。

害我找了一上午看这个问题,不过收获到的非PHP的知识,更多的是一种排查问题的思路,EOF。


后记:
Rango  下午 02:37:50
有nginx么?
可以用nginx的上传模块
那个比较强
回忆未来-向东-Jàck  下午 02:38:51
是么,我也用,你有那个的生产环境的配置么?
我感觉那个好像上传时是一点一点的写,它是先把上传的文件内容放内存缓冲么?
Rango  下午 02:39:15
是的。
先到缓存,缓存满了,就写文件
这样效率非常高
文件上传完了,再通知PHp
背景:想调试一下Flash的上传,用Firebug抓包上传的Url抓不到,于是找了下其他的插件,如下。
DownLoad Url:http://www.o-minds.com/payment/flashfirebug?m=1
FlashFirebug是一款可以让开发者在浏览器中直接调试Flash程序的Firefox扩展。通过这款扩展,开发人员可以像在浏览器中调试HTML/JS/CSS那样来直观的进行AS3的调试,操作界面则与Firebug一致。通过这款扩展,Firebug可以覆盖几乎全部的Web开发人员调试需求。

使用Flashfirebug需要安装firefox(当然!)、firebug以及debug版本的flash播放器.

FlashFirebug下载地址:https://addons.mozilla.org/en-US/firefox/addon/161670/

官方网站/使用帮助:http://www.o-minds.com/products/flashfirebug

本文来自:http://blog.sina.com.cn/s/blog_532751d90100r189.html



在adobe的网站上,有几种debug版本
http://www.adobe.com/support/flashplayer/downloads.html
第一个是IE的插件,
Download the Windows Flash Player 10.2 ActiveX control content debugger (for IE) (EXE, 2.99MB)
第二个是firefox的插件,
Download the Windows Flash Player 10.2 Plugin content debugger (for Netscape-compatible browsers) (EXE, 2.95MB)
安装了以上2个插件后,便可以用IE和firefox调试了。
第三个应该是桌面版本
Download the Windows Flash Player 10.2 Projector content debugger (EXE, 6.36MB)
到底是用IE还是firefox可以在window-> preference ->General->Web Browser 里选择合适的浏览。
我安装了chrome firefox ie,但选择里面没有chrome。但要用chrome来调试swf,也需要安装 for Netscape-compatible browsers 这个插件就行了。
C:/Program Files/Mozilla Firefox/plugins/NPSWF32.dll
Flash Builder cannot locate the required debugger version of Adobe Flash Player. You might need to install the debugger version of the Flash Player or reinstall Flash Builder.
来自:http://blog.csdn.net/lijiecong/article/details/6312382
Zend Optimizer 源代码开源

年前 Zend 公司称有意将 Zend Optimizer 开源(详情),而 Zend 已经将源码提交到 Github 上,网址是

https://github.com/zend-dev/ZendOptimizerPlus/



目前正在开发阶段的 PHP 5.5 将集成 Zend Optimizer+。
这个消息是由 Zend 公司的 CTO Zeev Suraski 宣布的。Zend Optimizer+ 是代码缓存优化工具,以前是收费产品 Zend Server 的一部分,最近开源了。通过对 PHP 文件生成的字节码的优化,Zend Optimizer+ 能提高解释器的性能。同时,它也能在共享的内存中保存预编译的字节码。
网上有很多LNMP/LAMP一键安装脚本,编译安装参数还要修改脚本,此脚本整合了LAMP和LNMP,在任何一台有网络的Red hat 或者centos 服务器上自动配置LNMP或者LAMP,用户可以自定义编译参数也可以使用此脚本默认的参数编译安装。还可以单独安装mysql、nginx、apache、php。
使用方法:将下面代码保存一个文件,例如inst_lanmp.sh 上传到服务器上执行。
此脚本在CentOS 6.0  X864环境下通过:使用效果如下:
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
代码如下:阅读全文
方法一:
一般个人Blog博客难免会碰到要搬家或者换空间的事情,Blog搬家其实是件非常简单的事情,可能你没搬过空间,如果你安装这个方法搬空间,你会觉得Blog搬家没想象那么难。
Blog博客搬家最主要的就两点,一个是网站的文件,一个是网站的数据,那么Blog换空间只要搞定这两步就OK了,现在就开始搬家。
第一步:把Blog原来的所以文件全部下载到本地,通过FTP或者登录空间进行在线下载都可以;
第二步:把下载好的文件全部文件全部上传到新空间制定文件夹;
第三步:下载原来数据库,进入旧网站的phpmyadmin管理界面下载全部的数据,方法是登录phpmyadmin,点击数据库,会出现一个界面,如图:
选择全部,然后把所以的数据导出到本地,保存成.sql格式,保存到本地后是个txt格式,如下图:
第四步:下载好之后,登录新空间的phpmyadmin数据库管理界面,把刚才下载好的.sql导入到新的数据库;
第五步:把网站的ip解析到新的空间上,这样Blog搬家就搞定了。
网络上关于Blog博客搬家的教程很多,基本上所以的搬家方法都是按照这样的做,只要空间没问题的话,一般不会出问题,如果出问题的话,按照个Blog搬家方法一定可以,祝你搬家成功。

方法二:
使用phpmyadmin同步功能迁移mysql数据库:
估计很多人都有在用,但是可能很多人都没有注意到phpmyadmin的同步功能。

其实这个同步功能非常简单、好用,可以实现单个数据表或整个数据库的同步功能,非常不错哦。

首先,需要登录phpmyadmin,然后在页面右上角找到“同步”,接下来,同步页面中会显示数据库和目标数据库,需要设置一下源数据库的IP、用户名及密码,然后选择一下本地数据库名称。这里注意一点,源数据库指的是你要导出的数据库,目标数据库指的是你要导入的数据库,所以,源数据库要选择“远程服务器”,目标数据库就要选择“当前服务器”了。配置好源数据库和目标数据库后,点击右下角的“执行”。一般来说,从源数据库同步到目标数据库,是不需要在目标数据库建表的,phpmyadmin的同步功能会自动建立数据表,所以我们只需要建立数据库就可以了,不需要其他设置、操作。

然后再点击右下角的“同步数据库”。如果当前目标数据库中存在数据,先勾选左下角的“你希望删除当前目标表中的所有数据吗?”-> 再点击右边“应用选中的修改”之后再选择“同步数据库”。
OK,接下来就等着吧,完成之后会有相应提示“已根据源数据库同步目标数据库”
注意:同步功能默认只有localhost,不能修改,这里需要在 config.inc.php里添加一个参数:
$cfg['AllowArbitraryServer'] = true;
这样就可以输入目标地址了。

转载请说明来自:jackxiang.com网站。
WSO是一个PHP shell后门,提供了一个接口,用于各种远程操作。它可以从远程执行代码,执行一切暴力破解的服务器,提供服务器信息,等等。
DownLoad:
http://www.unhonker.com/wp-content/uploads/2012/12/wso2.5.1.zip

来自:http://www.unhonker.com/information/835.html
当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现php不支持多线程的时候,大概会转换思路去用一些不够好的语言,比如perl。
其实的是大多数情况下,你大可不必使用fork或者线程,并且你会得到比用fork或thread更好的性能。
它运行的很好,但是在fsockopen()分析完hostname并且建立一个成功的连接(或者延时$timeout秒)之前,扩充这段代码来管理大量服务器将耗费很长时间。
因此我们必须放弃这段代码;我们可以建立异步连接-不需要等待fsockopen返回连接状态。PHP仍然需要解析hostname(所以直接使用ip更加明智),不过将在打开一个连接之后立刻返回,继而我们就可以连接下一台服务器。

PHP5中可以使用新增的stream_socket_client()函数直接替换掉fsocketopen()。PHP5之前的版本,你需要自己动手,用sockets扩展解决问题。

php中stream_socket_client的多路复用采集网站数据,同时开多少个比较合适呢,要求在最短时间内采集最多数据:
打造nginx为高效的上传附件服务器:(对立面的逻辑做了修改,好像是不用PHP来处理了)
http://hi.baidu.com/hackers365/item/ddaa0d2f91cc4886ae48f571

作者微博客:http://t.lava.cn/w/23651 下载地址也在立面。 2013-04-14 15:15:00
hack掉nginx_http_upload模块,添加了一个新的变量upload_file_md5_last。此变量可以得到最后一个文件的md5值。。。在这个问题上绊了两三个星期。昨天搞到十一点多。还是无果。今天早上给老婆发誓。今天整不好。晚上不睡觉。。。终于在最后一刻搞定了。。。耶。可以睡觉了。。

详细:
在ngx_http_upload的模块变量upload_file_md5的get_handler里。它是每次动态生成的。。只有第一次使用的时候是正确的值。以后每次使用。get_handler里都会改变。。得不到正确的值。。所以。我就给它添加了一个变量upload_file_md5_last可以得到最后一个文件md5值。。。好了。可以继续下面未完成的工作了。
附件是修改之后的ngx_upload模块。

阅读全文
黑客X档案2011年12月刊:小菜也来写PHP木马说到这个变量,再就是在进行一些目录的截取时可能会用到这些变量:

DIRECTORY_SEPARATOR:
路径分隔符,
linux上就是’/’
windows上是’\’

PATH_SEPARATOR:
include多个路径使用,在win下,当你要include多个路径的话,你要用”;”隔开,但在linux下就使用”:”隔开的。

这2个常量的使用能够避免不同平台的兼容性问题。

来自:http://gaoke0820.blog.163.com/blog/static/216649652010726101431997/

今天群里一个朋友在问这个问题。

查了下,CURL确实很强悍的可以伪造IP和来源。

1.php 请求 2.php 。
1.php代码:

2.php代码如下:

伪造成功,这是不是给“刷票”的朋友提供了很好的换IP的方案!!
哈哈。

结果:
HTTP/1.1 200 OK Date: Wed, 03 Apr 2013 06:20:42 GMT Server: Apache/2.2.22 (Win32) PHP/5.3.13 X-Powered-By: PHP/5.3.13 Content-Length: 44 Content-Type: text/html
IP: 8.8.8.8
referer: http://www.gosoa.com.cn/

来自:http://www.gosoa.com.cn/php%E7%94%A8curl%E4%BC%AA%E9%80%A0ip%E5%92%8C%E6%9D%A5%E6%BA%90
一、
一电脑只能通过editplus到路径下输入hosts文件,但是看不到文件,通过文件夹选项:查看,去掉隐藏受保护的操作系统文件,能看到文件,但是通过在文件上点属性,后发现其后面的隐藏还是一个disabled的勾勾,也就是属性上还是有隐藏这一项,于是,想去掉都去不掉,最后在网上找了一工具:
http://iask.sina.com.cn/b/15491022.html
我找到了三个不同的修复工具,见附件。
附件:隐藏文件恢复.rar
DownLoad:  
里面的,U盘MP3隐藏文件夹病毒修复工具.exe 运行后,就Ok了。
至于权限不够,无法覆盖该文件,可采用文件属性里的安全里添加相关权限即可。

二、
hosts文件拒绝访问解决办法:
1,对于第一种原因,自然是杀毒,这里就不详细解释了; 360卸载了就好了。(一直提示要administrator才能啥啥啥的...卸载后成功了。)
2,杀毒软件或其他安全软件为系统安全禁止了hosts文件的修改权限。
3,如果以上两个方法都行不通,可以尝试通过手工修改hosts文件写入权限的方法。
a,右键点击hosts文件,去掉只读属性,增加存档属性;
b,在xp下,点击开始->运行,请输入:attrib %SystemRoot%\system32\drivers\etc\hosts -h -r –s 点”确定”按钮。
背景:估计那个同学想做PHP的长连接,或者是想有些较为少用的用法,但它涉及到了缓冲的概念(PHP和Apache,PHP和Nginx等,Web服务器的一个接口等)
关于PHP 刷新缓冲区操作(边执行边输出)简单分析:
PHP群里有一位同学问


这段代码在apache下能边执行边输出,在nginx下怎么就不行了?

简单的理解为2个问题:

1 首先这个问题核心就是当缓冲区数据达到一定量时先输出到浏览器。

2 apache和nginx 的php执行方式差异。

这个问题和我上篇博文《FastCGI 技术介绍》有一定的联系,apache是以CGI/CLI的方式调用php。而nginx 是以fastcgi方式调用PHP。FastCGI 基于Unix domain socket或者tcp/ip进行通信。
步骤  名称  描述
1  FCGI_PARAMS  从web服务器如nginx向fastcgi应用程序发送请求数据、环境变量等
2  FCGI_STDIN  接送从web服务器发送来的数据
3  FCGI_DATA  过滤web服务器发送来的数据
4  FCGI_STDOUT  发送数据到web服务器
5  FCGI_STDERR  发送状态(错误信息)到web服务器
6  FCGI_END_REQUEST  结束本次http请求

就是意味着可以设置一定的缓冲区大小 来实现。

土话就是:人为让缓冲区容量达到一定额。

nginx FastCGI 提供了2个参数

修改nginx.conf

参数可以调整。具体文档:http://wiki.nginx.org/HttpFastcgiModule#fastcgi_buffer_size

修改上述PHP代码



来自:http://www.cydphp.cn/?p=155
再就是这位兄弟的:http://www.cydphp.cn/?p=107  【写得比较原始,原始的CGI,当年没有PHP时是这么干的,可以有较为深入的理解】
背景:群里有人问这个问题:
Unable to allocate memory for pool
经过排查发现时平台服务器上安装的APC扩展分配的cache空间满了
解决方法如下:
平台服务器上APC扩展默认cache大小为32M(apc.shm_size = 32)
将cache大小修改大一些,比如修改成256M(apc.shm_size = 256),
重启php-fpm 就可以了

php 脚本打印出 Warning :  Unable to allocate memory for pool.
经检查,服务器上安装了APC,而apc分配的Cache空间已经被完全占用。
解决方法:
1. apc增大 apc.shm_size ,比如,从默认的30M 变成256M
2. 隐藏PHP的Warning 报警

当然啦,前者是王道,后者是诡道。

参考来自:
http://hi.baidu.com/cuttinger/item/bef6171e5d5538f964eabfd6
http://blog.chinaunix.net/uid-20788275-id-1841832.html
microtime:


定义:microtime() 函数返回当前 Unix 时间戳和微秒数。
语法:microtime(get_as_float)
从php5.0以后增加一参数
参数   描述
get_as_float   如果给出了 get_as_float 参数并且其值等价于 TRUE,该函数将返回一个浮点数。
以前版本取时间时方法为:

php5.0以后可以如下实现:

这样用原生php方法,效率大大提高,测试执行效率提高200%以上。

有论述这个问题的:
http://blog.csdn.net/haha00217/article/details/7690499
分页: 14/24 第一页 上页 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 下页 最后页 [ 显示模式: 摘要 | 列表 ]