Нам нужен PHP на плате ARM. Я успешно перекрестно скомпилировал как PHP 5, так и THTTPD, и оба они, похоже, отлично работают на плате ARM, только страницы .php отображаются необработанными (если вы используете «Просмотр источника» в веб-браузере, вы можете увидеть PHP код).
Это должна быть глупая деталь конфигурации, я действительно чувствую, что я вырываю поражение от челюстей победы. Любая помощь или умные идеи были бы высоко оценены!
Вот мои шаги по созданию, развертыванию и тестированию:
Мой файл thttpd.conf:
dir=/srv/www phppat=** phpspat=**.php logfile=/srv/www/logs/web.log nochroot port=80
Моя процедура была:
cd ~/packages/php/ tar xjvf php-5.2.1.tar.bz2 cd ~/packages/thttpd/ tar xzvf thttpd-2.21b.tar.gz cd ~/packages/php/php-5.2.1/ mkdir install-arm export CC=/bin/arm-linux-gcc export CXX=/bin/arm-linux-cpp ./configure --host=i386-linux-gnu --target=arm --prefix=install-arm \ --disable-short-tags --without-mysql \ --without-pear --disable-all --disable-short-tags --enable-force-cgi-redirect --enable-discard-path \ --with-thttpd=../../thttpd/thttpd-2.21b make make install cd ~/packages/thttpd/thttpd-2.21b export CC=/bin/arm-linux-gcc export CXX=/bin/arm-linux-c++ export CPP=/bin/arm-linux-c++ ./configure --host=i386-linux-gnu --target=arm --prefix=/srv/www # I got compiling errors for thttpd.c caused by the ifdef condition not happening and # an include file not added. Deleted the ifdef/end if and recompiled. This # necessary for two files. ################ in file thttpd.c changed: #ifdef HAVE_FCNTL_H #include <fcntl.h> #endif # to: #include <fcntl.h> ############### in file fdwatch.c changed: #ifdef HAVE_POLL_H #include <poll.h> #else /* HAVE_POLL_H */ #ifdef HAVE_SYS_POLL_H #include <sys/poll.h> #endif /* HAVE_SYS_POLL_H */ #endif /* HAVE_POLL_H */ # to: #include <poll.h> # also tried: #include <sys/poll.h> # (both work) make # to make sure we get 0 (success) despite the warnings: echo $? # no make install, all references indicated it's broken and I also got errors # where directories with the same name prevented files from being written. ########## deployment to board # copied "php" and "thttpd" executables in /usr/sbin using following command # in Cutecom: cd /usr/sbin tftp -g -r php 192.168.1.25 tftp -g -r thttpd 192.168.1.25 chmod +x php chmod +x thttpd # unsure, should I get a libphp5.so ? Where is it?: # tried: # cd /usr/lib # tftp -g -r libphp5.a 192.168.1.25 # chmod +rx cd /srv/www mkdir conf cd conf tftp -g -r thttpd.conf 192.168.1.25 cd /srv /usr/sbin/thttpd -C /srv/www/conf/thttpd.conf # HTML pages and images displayed fine, test.php is passed without pre-processing, # contains: # <? # phpinfo(); # ?> ############## Testing if PHP works on the ARM board root@arago:/srv/www/cgi-bin# php -v PHP 5.2.1 (cli) (built: Sep 27 2010 10:59:59) Copyright (c) 1997-2007 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies root@arago:/srv/www/cgi-bin# php -r 'phpinfo();' phpinfo() PHP Version => 5.2.1 System => Linux arago 2.6.33-rc4 #1 PREEMPT Thu Mar 25 15:06:29 IST 2010 armv5tejl Build Date => Sep 27 2010 11:30:59 Configure Command => './configure' '--host=i386-linux-gnu' '--target=arm' '--prefix=install-arm' '--disable-short-tags' '--without-mysql' '--without-pear' '--disable-all' '--disable-short-tags' '--enable-force-cgi-redirect' '--enable- discard-path' '--with-thttpd=../../thttpd/thttpd-2.21b' Server API => Command Line Interface Virtual Directory Support => disabled Configuration File (php.ini) Path => install-arm/lib PHP API => 20041225 PHP Extension => 20060613 Zend Extension => 220060519 Debug Build => no Thread Safety => disabled Zend Memory Manager => enabled IPv6 Support => enabled Registered PHP Streams => php, file, data, http, ftp Registered Stream Socket Transports => tcp, udp, unix, udg Registered Stream Filters => string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed This program makes use of the Zend Scripting Language Engine: Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies _______________________________________________________________________ Configuration PHP Core Directive => Local Value => Master Value allow_call_time_pass_reference => On => On allow_url_fopen => On => On allow_url_include => Off => Off always_populate_raw_post_data => Off => Off arg_separator.input => & => & arg_separator.output => & => & asp_tags => Off => Off auto_append_file => no value => no value auto_globals_jit => On => On auto_prepend_file => no value => no value browscap => no value => no value default_charset => no value => no value default_mimetype => text/html => text/html define_syslog_variables => Off => Off disable_classes => no value => no value disable_functions => no value => no value display_errors => On => On display_startup_errors => Off => Off doc_root => no value => no value docref_ext => no value => no value docref_root => no value => no value enable_dl => On => On error_append_string => no value => no value error_log => no value => no value error_prepend_string => no value => no value error_reporting => no value => no value expose_php => On => On extension_dir => install-arm/lib/php/extensions/no-debug-non-zts-20060613 => install- arm/lib/php/extensions/no-debug-non-zts-20060613 file_uploads => On => On highlight.bg => <font style="color: #FFFFFF">#FFFFFF</font> => <font style="color: #FFFFFF">#FFFFFF</font> highlight.comment => <font style="color: #FF8000">#FF8000</font> => <font style="color: #FF8000">#FF8000</font> highlight.default => <font style="color: #0000BB">#0000BB</font> => <font style="color: #0000BB">#0000BB</font> highlight.html => <font style="color: #000000">#000000</font> => <font style="color: #000000">#000000</font> highlight.keyword => <font style="color: #007700">#007700</font> => <font style="color: #007700">#007700</font> highlight.string => <font style="color: #DD0000">#DD0000</font> => <font style="color: #DD0000">#DD0000</font> html_errors => Off => Off ignore_repeated_errors => Off => Off ignore_repeated_source => Off => Off ignore_user_abort => Off => Off implicit_flush => On => On include_path => .: => .: log_errors => Off => Off log_errors_max_len => 1024 => 1024 magic_quotes_gpc => On => On magic_quotes_runtime => Off => Off magic_quotes_sybase => Off => Off mail.force_extra_parameters => no value => no value max_execution_time => 0 => 0 max_input_time => -1 => -1 memory_limit => 128M => 128M open_basedir => no value => no value output_buffering => 0 => 0 output_handler => no value => no value post_max_size => 8M => 8M precision => 14 => 14 realpath_cache_size => 16K => 16K realpath_cache_ttl => 120 => 120 register_argc_argv => On => On register_globals => Off => Off register_long_arrays => On => On report_memleaks => On => On report_zend_debug => Off => Off safe_mode => Off => Off safe_mode_exec_dir => /usr/local/php/bin => /usr/local/php/bin safe_mode_gid => Off => Off safe_mode_include_dir => no value => no value sendmail_from => no value => no value sendmail_path => -t -i => -t -i serialize_precision => 100 => 100 short_open_tag => Off => Off SMTP => localhost => localhost smtp_port => 25 => 25 sql.safe_mode => Off => Off track_errors => Off => Off unserialize_callback_func => no value => no value upload_max_filesize => 2M => 2M upload_tmp_dir => no value => no value user_dir => no value => no value variables_order => EGPCS => EGPCS xmlrpc_error_number => 0 => 0 xmlrpc_errors => Off => Off y2k_compliance => On => On zend.ze1_compatibility_mode => Off => Off date date/time support => enabled Timezone Database Version => 2006.16 Timezone Database => internal Default timezone => UTC Directive => Local Value => Master Value date.default_latitude => 31.7667 => 31.7667 date.default_longitude => 35.2333 => 35.2333 date.sunrise_zenith => 90.583333 => 90.583333 date.sunset_zenith => 90.583333 => 90.583333 date.timezone => no value => no value Reflection Reflection => enabled Version => $Id: php_reflection.c,v 1.164.2.33.2.33 2007/01/01 09:36:05 sebastian Exp $ standard Regex Library => Bundled library enabled Dynamic Library support not available<br />. Directive => Local Value => Master Value assert.active => 1 => 1 assert.bail => 0 => 0 assert.callback => no value => no value assert.quiet_eval => 0 => 0 assert.warning => 1 => 1 auto_detect_line_endings => 0 => 0 default_socket_timeout => 60 => 60 safe_mode_allowed_env_vars => PHP_ => PHP_ safe_mode_protected_env_vars => LD_LIBRARY_PATH => LD_LIBRARY_PATH url_rewriter.tags => a=href,area=href,frame=src,form=,fieldset= => a=href,area=href,frame=src,form=,fieldset= user_agent => no value => no value Additional Modules Module Name Environment Variable => Value TSLIB_TSDEVICE => /dev/input/touchscreen0 USER => root OLDPWD => /srv/www HOME => /home/root PS1 => \u@\h:\w\$ LOGNAME => root TERM => linux PATH => /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin: SHELL => /bin/sh PWD => /srv/www/cgi-bin TZ => UTC EDITOR => /bin/vi PHP Variables Variable => Value _SERVER["TSLIB_TSDEVICE"] => /dev/input/touchscreen0 _SERVER["USER"] => root _SERVER["OLDPWD"] => /srv/www _SERVER["HOME"] => /home/root _SERVER["PS1"] => \u@\h:\w\$ _SERVER["LOGNAME"] => root _SERVER["TERM"] => linux _SERVER["PATH"] => /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin: _SERVER["SHELL"] => /bin/sh _SERVER["PWD"] => /srv/www/cgi-bin _SERVER["TZ"] => UTC _SERVER["EDITOR"] => /bin/vi _SERVER["PHP_SELF"] => - _SERVER["SCRIPT_NAME"] => - _SERVER["SCRIPT_FILENAME"] => _SERVER["PATH_TRANSLATED"] => _SERVER["DOCUMENT_ROOT"] => _SERVER["REQUEST_TIME"] => 1267544129 _SERVER["argv"] => Array ( [0] => - ) _SERVER["argc"] => 1 _ENV["TSLIB_TSDEVICE"] => /dev/input/touchscreen0 _ENV["USER"] => root _ENV["OLDPWD"] => /srv/www _ENV["HOME"] => /home/root _ENV["PS1"] => \u@\h:\w\$ _ENV["LOGNAME"] => root _ENV["TERM"] => linux _ENV["PATH"] => /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin: _ENV["SHELL"] => /bin/sh _ENV["PWD"] => /srv/www/cgi-bin _ENV["TZ"] => UTC _ENV["EDITOR"] => /bin/vi PHP License This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.
Вышеупомянутая процедура сработала!
Проблема заключалась в использовании синтаксиса PHP, он нуждался в полной
<?php ?>
делителей, а не
<? ?>