Hello,
I am attempting to use PHP to start, stop and restart Wowza.
For doing this from the command line in Linux, I have the following script:
#!/bin/bash
#
# Startup script for Wowza Media Server
#
# chkconfig: - 80 20
# description: Wowza Media Server is a media server
#
#### BEGIN INIT INFO
# Provides: WowzaMediaServer
# Required-Start: $syslog $time $local_fs $remote_fs
# Required-Stop: $syslog $time $local_fs $remote_fs
# Default-Start: 3 4 5
# Default-Stop: S 0 1 2 6
# Short-Description: Wowza Media Server 3 Init Script
# Description: Wowza Media Server 3 Init Script
### END INIT INFO
WMCOMMAND=${1}
FUNCTIONS_EXIST=false
if [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
FUNCTIONS_EXIST=true
fi
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
FUNCTIONS_EXIST=true
fi
if ! $FUNCTIONS_EXIST ; then
failure() {
return 0
}
success() {
return 0
}
fi
# define vars
RETVAL=0
WMSBASE_NAME=WowzaMediaServer
#WMSCONFIG_SCRIPT="/etc/WowzaMediaServer/$WMSBASE_NAME.conf"
WMSCONFIG_SCRIPT="/usr/local/WowzaMediaServer/bin/setenv.sh"
WMSLICENSE_FILE="/usr/local/WowzaMediaServer/conf/Server.license"
AMAZONEC2_INSTALL_SCRIPT="/usr/local/WowzaMediaServer/bin/AmazonEC2Install.sh"
WMSDAEMON_CMD=/usr/bin/WowzaMediaServerd
WMSPID_FILE="/var/run/$WMSBASE_NAME.pid"
WMSLOCK_FILE="/var/run/$WMSBASE_NAME"
if test -w "/var/lock/subsys" ; then
WMSLOCK_FILE="/var/lock/subsys/$WMSBASE_NAME"
fi
SHUTDOWN_WAIT=20
[ -r "$WMSCONFIG_SCRIPT" ] && . "$WMSCONFIG_SCRIPT"
if ! test -f "${WMSLICENSE_FILE}" ; then
echo ""
echo "ERROR: Missing license file: (${WMSLICENSE_FILE})"
echo "You must first run Wowza Media Server 3 in "
echo "standalone mode to enter serial number. Execute the "
echo "following commands to run in standalone mode:"
echo ""
echo "cd /usr/local/WowzaMediaServer"
echo "./startup.sh"
echo ""
exit 0
fi
testjava=`which ${_EXECJAVA} 2>/dev/null`
if ! test -f "$testjava" ; then
echo ""
echo "ERROR: The Java command (${_EXECJAVA}) could not be found."
echo "Search path: $PATH"
echo "In most cases this problem can be fixed by adding a symbolic "
echo "link to the Java command in the /usr/bin directory. "
echo "To do this first execute the command \"which java\" to identify "
echo "the full path to the Java executable. Next, create a symbolic "
echo "link to this file with the command"
echo "\"ln -sf [path-to-java] /usr/bin/java\" where [path-to-java] is "
echo "the path returned by the \"which\" command."
echo ""
exit 0
fi
#
start() {
if [ -f $WMSPID_FILE ]; then
read kpid < $WMSPID_FILE
kill -9 $kpid
echo $"$WMSBASE_NAME is already running ($kpid): stopping"
rm -f $WMSPID_FILE
fi
echo -n $"$WMSBASE_NAME: starting"
#$AMAZONEC2_INSTALL_SCRIPT
$WMSDAEMON_CMD $WMSCONFIG_SCRIPT $WMSPID_FILE start >/dev/null 2>&1 &
success "$WMSBASE_NAME startup"
echo
touch $WMSLOCK_FILE
return 0
}
stop() {
if [ -f $WMSPID_FILE ]; then
echo -n $"$WMSBASE_NAME: stopping"
read kpid < $WMSPID_FILE
$WMSDAEMON_CMD $WMSCONFIG_SCRIPT $WMSPID_FILE stop >/dev/null 2>&1 &
let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $kpid | grep -c $kpid` = '0' ] || [ $count -gt $kwait ]
do
echo -n -e "\nwaiting for processes to exit";
sleep 1
let count=$count+1;
done
if [ $count -gt $kwait ]; then
echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
kill -9 $kpid
fi
rm -f $WMSPID_FILE
success "$WMSBASE_NAME shutdown"
else
echo -n $"$WMSBASE_NAME: not running"
fi
echo
rm -f $WMSLOCK_FILE
return 0
}
localstatus() {
if [ -f $WMSLOCK_FILE ]; then
echo "$WMSBASE_NAME started"
else
echo "$WMSBASE_NAME stopped"
fi
RETVAL=0
}
# See how we were called.
case "$WMCOMMAND" in
start)
start
;;
stop)
stop
;;
status)
localstatus
;;
restart)
stop
start
;;
*)
echo $"Usage: $WMSBASE_NAME {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
This script accepts a call ’ /etc/init.d/WowzaMediaServer stop’ to stop the server.
When I am logged into Linux this works with no problem.
However, when I use the PHP exec() function to STOP the server with the same script, I get the following response:
[1] => ERROR: Missing license file: (/usr/local/WowzaMediaServer/conf/Server.license)
[2] => You must first run Wowza Media Server 3 in
[3] => standalone mode to enter serial number. Execute the
[4] => following commands to run in standalone mode:
[5] =>
[6] => cd /usr/local/WowzaMediaServer
[7] => ./startup.sh
I’m not sure why I am getting this response when I attempt to STOP the server. I’ve only ever seen it when I attempted to start the server without the license file.
Any ideas why executing the same call to stop the server would work when I’m logged into Linux but not from my PHP script?
Is this the best way to start/stop/restart Wowza or is there a better way?
take care,
lee