嵌入式技术论坛
直播中

方孔恩

9年用户 18经验值
擅长:嵌入式技术
私信 关注
[问答]

嵌入式web服务器+php+sqlite的移植

`目前需要移植如题目上的一个web服务器,要求支持php和sqlite,考虑到参考资料还有板子内存的问题,现在初步选择了BOA+PHP+Sqlite的方案。但是中间存在一些问题,如下面所示。
下图是电脑网页显示的信息:

下图是板子终端显示的错误信息
TIM截图20190809203725.png
请问下论坛里面的各位大佬,这种问题该怎么解决呢?
目前可以确定的是,1)单单是BOA的移植,在修改了boa.conf,是没有问题的,可以识别html和cgi文件,正常显示index.html和helloworld.cgi,如图

TIM截图20190809204259.png TIM截图20190809204317.png
2)对于php的移植,这里我选择了php-5.5.5版本的,关于交叉编译时的配置选项如下:
  1. #! /bin/sh
  2. ./configure  
  3. --host=arm-none-linux-gnueabi
  4. --prefix=/usr/local/php
  5. --enable-shared=no  
  6. --disable-shared
  7. --enable-static=yes
  8. --enable-sockets  
  9. --disable-all
  10. --enable-pdo
  11. --enable-json
  12. --disable-ipv6
  13. --enable-sqlite-utf8
  14. --with-libxml-dir=/usr/local/libxml2
  15. --with-openssl-dir=/usr/local/openssl/include/openssl
  16. --with-zlib-dir=/usr/local/zlib
  17. --with-config-file-scan-dir=/usr/local/appweb
  18. --with-iconv-dir=/usr/local/libiconv
  19. #这里我之前已经交叉编译并安装了xml2。openssl。zlib。iconv库
最后得到PHP安装后的目录/usr/local/php,并且将make源码包里面的php.ini-development复制到该安装目录的lib下,将/usr/local/php下的php安装目录打包,依然放在开发板下的/usr/local/php。
3)但是,我把自己测试的test1.php或者test2.php文件(两个都是用来测试的小栗子)放在/var/www下,用电脑访问,结果就出现了最上面的错误,
这是test1.php

  1. #! /usr/local/php/bin/php
  2. echo "X-Powered-By: PHP/5.5.5
  3. ";
  4. echo "Content-type: text/html
  5. ";
  6. ?>


  7. Hello!
  8. echo $_SERVER["QUERY_STRING"];
  9. ?>

这是test2.php

  1. #! /usr/local/php/bin/php
  2.     phpinfo();
  3. ?>
这到底是怎么回事啊?为什么别人都移植的好好的,而我这就不行了呢????请大佬帮忙看下,到底是哪个方面出了问题。
4)我的板子只能静态编译,所以我编译的boa、php、php-cgi都是静态可执行文件,里面所有的库我也用的都是静态库,编译的时候都是静态链接,在更改boa.conf如下:

  1. CGIPath /bin:/usr/bin:/usr/local/php/bin

  2. # SinglePostLimit: The maximum allowable number of bytes in
  3. # a single POST.  Default is normally 1MB.

  4. # AddType: adds types without editing mime.types
  5. # Example: AddType type extension [extension ...]

  6. # Uncomment the next line if you want .cgi files to execute from anywhere
  7. #AddType application/x-httpd-cgi cgi

  8. # Redirect, Alias, and ScriptAlias all have the same semantics -- they
  9. # match the beginning of a request and take appropriate action.  Use
  10. # Redirect for other servers, Alias for the same server, and ScriptAlias
  11. # to enable directories for script execution.

  12. # Redirect allows you to tell clients about documents which used to exist in
  13. # your server's namespace, but do not anymore. This allows you to tell the
  14. # clients where to look for the relocated document.
  15. # Example: Redirect /bar http://elsewhere/feh/bar

  16. # Aliases: Aliases one path to another.
  17. # Example: Alias /path1/bar /path2/foo

  18. Alias /doc /usr/doc

  19. # ScriptAlias: Maps a virtual path to a directory for serving scripts
  20. # Example: ScriptAlias /htbin/ /www/htbin/

  21. ScriptAlias /cgi-bin/ /var/www/cgi-bin/
  22. ScriptAlias /php/ /var/www/

  23. AddType application/x-httpd-cgi php
5)大佬们还有其他的方案吗?可以用appweb或者apache代替boa进行实现,只要别太大内存就好。请大佬们动动小手解决这个简单的问题,只要您在这提的宝贵意见我尝试后,或者你用appweb或者apache代替boa,再加上php和sqlite交叉编译后,在我的板子上测试成功,必定有偿感谢!!要求:静态编译,内存尽量小,时间要快
` TIM截图20190809204021.png

回帖(1)

方孔恩

2019-8-9 21:42:39
现在我还有几个问题:
1.是boa对php支持的不够好吗?
2.是我的boa.conf设置的有问题吗?
3.我也比葫芦画瓢把php.ini-development复制到该安装目录/usr/local/php/lib下,是这一步有问题吗?如果是,那php.ini有什么作用和意义呢?
4.我也是静态编译php5.5.5的,是这个方面的原因吗
举报

更多回帖

发帖
×
20
完善资料,
赚取积分