本文能够避免交叉编译的时出现ZLIB extension requires zlib >=1.09
交叉编译libxml2和zlib,扩展arm-Linux-gcc的lib库。其中libxml2是PHP5安装必须的库文件
1.首先交叉编译zlib。
- CC=arm-linux-gcc
- ./configure --host=arm-linux --prefix=/usr/local/zlib /你安装的目录
- make
- make install
- CC=arm-linux-gcc
- ./configure --host=arm-linux --prefix=/usr/local/libxml2 /你安装的目录
- make
- make install
- CC=arm-linux
- ./configure --host=arm-linux --prefix=/usr/local/php --disable-all --enable-sockets --with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib /重点 需要链接到你安装的目录
- make
- make install
4.因为arm资源紧张,我们需要精简PHP,去掉调试信息。在php/bin/执行以下命令
- arm-linux-strip php
- arm-linux-strip php-cgi
5.将PHP源码包中php-.ini-dist文件复制到/usr/local/php-arm/lib下并改名为php.ini 因为指定了prefix,php缺省会去/opt/php/lib 下找到php.ini
6.将编译好的PHP拷贝到目标板上
7.要让BOA能够通过CGI执行PHP,修改/etc/boa/boa.conf,修改
CGIPath为:CGIPath /bin:/opt/php5/bin
最后添加一行:
AddType application/x-httpd-cgi php
在/www建立test.php
#!/opt/php5/bin/php
<?php
echo "X-Powered-By: PHP/5.2.17\n";
echo "Content-type: text/html\n\n";
?>
<html>
<body>
Hello!
<?php
echo $_SERVER["QUERY_STRING"];
?>
</body>
</html>
在浏览器中可以打开!
注意:
按上述弄好以后,在命令行下执行php-cgi完全正常,但写成脚本就是不行,最后发现只能用php,即脚本最前面一行必须是:
#!/opt/php5/bin/php
而不能是
#!/opt/php5/bin/php-cgi
那么每个文件最前面必须用下面几行返回必须的文件头了:
<?php
echo "X-Powered-By: PHP/5.2.17\n";
echo "Content-type: text/html\n\n";
?>