最近在看PHP内部实现的东西,想要了解PHP是如何从一个.php文件经过词法/语法/语义等分析生成OPCODE的。
鸟哥在博客里面安利了vld.so这个php opcode dump工具,网上没有在osx下mamp安装opcode的教程,自己鼓捣了一下,记录一下方便后人。
前提需要安装xcode command line tool这个网上教程比较多,自己去搜一下吧。
首先在/Applications/MAMP/bin/php中新建一个目录include。
下载一个对应版本的php源码解压到这个目录,并且
./configure
make && make install
之后导入shell环境变量到当前目录
echo "export PATH=/Applications/MAMP/bin/php/php{对应版本}/bin:$PATH" >> ~/.profile
运行
. ~/.profile
pear config-set php_ini /Applications/MAMP/bin/php/php{对应版本}/conf/php.ini
pecl config-set php_ini /Applications/MAMP/bin/php/php{对应版本}/conf/php.ini
更新pecl
pecl channel-update pecl.php.net
下载与安装VLD
wget http://pecl.php.net/get/vld-{对应版本}.tgz
tar zxvf vld-{对应版本}.tgz
cd ./vld-{对应版本}
/Applications/MAMP/bin/php/php{对应版本}/bin/phpize
./configure --with-php-config=/Applications/MAMP/bin/php/php{对应版本}/bin --enable-vld
make && make install
然后在
/Applications/MAMP/bin/php/php{对应版本}/conf/php.ini中添加
[vld]
extension=vld.so
并且在mamp的选项edit template里修改php.ini
然后source ~/.profile
之后php运行
php -dvld.active=1 /path/to/your/code.php
就可以看到opcode的输出了