起因


又是很久很久以前(大概1年多了)看到鸟哥的《使用PHP Embed SAPI实现Opcodes查看器》,然后在Ubuntu上跟着折腾了起来,最后勉强也是跑起来了。最近找回了这份代码,打算在新笔记本上编译,然后问题就接踵而来。

Mac上编译PHP embed sapi


Ubuntu上的套路,直接

$ cd php-src/
$ ./configure –enable-embed
$ make && make install

编译出libphp5.so, 但是Mac上不认这一套,后来Google到《在mac上开启php的embed模式》才知道要编译成libphp5.dylib。其实按照文章我打上patch执行make提示没有相关规则,继续Google后《在mac上开启php的embed模式》(别吐槽为什么名字一样,其实不是同一篇)。autoconf以后重新configure

$ cd php-src/
$ ./configure –enable-embed
$ make libphp5.dylib && make install

到这里动态链接库就编译好了。

Read more...

很久很久以前,翻php.ini的时候看到了一堆“同族”的函数

; This directive allows you to disable certain functions for security reasons. ; It receives a comma-delimited list of function names. This directive is ; NOT affected by whether Safe Mode is turned On or Off. ; http://php.net/disable-functions disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited, pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig, pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask, pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority

当时就想要是支持通配符那么直接写成pcntl_*这样就简便多了。想法是有了,但是不知道怎么实现好。偶然的机会看到了《浅谈从PHP内核层面防范PHP WebShell》这文章,当中提到zend_disable_function这个函数,于是感觉先前的通配符想法可以实现了。

说一下简单的思路吧:在php.ini读取配置,遍历函数表,正则匹配函数然后删除掉,注册一个同名函数以便给前端提示。

Read more...

前段时间 @红黄满 同学用python写了个获取手机IMEI信息的小脚本,今天小小的改动了一下,让它在Android上跑起来

效果图因为放在SAE的博客,然后博客年代久矣被我删了,现在手头上也没Android设备,然后就没然后了,请看官老爷们自行脑补

SL4A环境搭配(https://code.google.com/p/android-scripting/)

Read more...