cross-compiled THTTPD server with PHP runs fine, but no PHP
We need some PHP on an ARM board. I've successfully cross-compiled both PHP 5 and THTTPD and they both seem to run fine on the ARM board, only the .php pages are shown unprocessed (if you do "View Source" in the web browser, you can see the PHP code).
It has to be a silly configuration detail, I really feel that I am snatching defeat from the jaws of victory. Any help or smart ideas would be greatly appreciated!
Here are my steps to build, deploy and test:
My thttpd.conf file is:
dir=/srv/www
phppat=**
phpspat=**.php
logfile=/srv/www/logs/web.log
nochroot
port=80
My procedure was:
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
Con开发者_开发知识库figure 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.
The above procedure worked!
The problem was the PHP syntax used, it needed the full
<?php
?>
delimiters rather than
<?
?>
精彩评论