includen der ~user Seiten

Status
Für weitere Antworten geschlossen.

DEDEX7200Pro

Benutzer
Mitglied seit
15. Mrz 2010
Beiträge
85
Punkte für Reaktionen
0
Punkte
0
Hallo Jungs, ich habe eine php Datei in den Ordner meines Bruders gelegt mit folgendem Inhalt:

<?php
echo $_SERVER["SCRIPT_FILENAME"];
?>

Diese gibt mir aus, dass der Pfad so sei:
var/services/homes/meinbruder/www/index.php

(Also aus dem Webaufrufbar unter http://meineip/~meinbruder)

Bei der Datei http://www.meineip/test.php kommt folgendes raus:
/var/services/web/test.php


Jetzt wollte ich ein include Befehl in eine andere Datei schreiben und habe dies so gemacht:

<?php
include ("var/services/homes/meinbruder/www/index.php");
?>

Folgender Fehler:
Warning: include() [function.include]: open_basedir restriction in effect. File(/var/services/homes/meinbruder/www/index.php) is not within the allowed path(s): (/etc:/tmp:/usr/bin/php:/usr/syno/synoman:/var/packages/MailStation/target/roundcubemail:/var/run:/var/services/blog:/var/services/homes:/var/services/photo:/var/services/web:/var/spool/php:/volume1/@tmp/php:/volume1/homes:/volume1/photo:/volume1/web:) in /volume1/web/index.php on line 15

Warning: include(/var/services/homes/meinbruder/www/index.php) [function.include]: failed to open stream: Operation not permitted in /volume1/web/index.php on line 15

Warning: include() [function.include]: Failed opening '/var/services/homes/meinbruder/www/index.php' for inclusion (include_path='.:/usr/syno/php/lib/php') in /volume1/web/index.php on line 15
--------------------------------------------------------------------------
Wenn ich jetzt aber die Test-Datei includen will, dann geht es. Das muss irgendwie an ner Einstellung liegen. Was muss ich da ändern?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Steht eigentlich schon deutlich da: die open_basedir - Direktive in der PHP-Umgebung anders definieren. Unter diesem Stichwort gibt es unednlich viele Beiträge hier im Forum ... einfach mal suchen.

Itari
 

DEDEX7200Pro

Benutzer
Mitglied seit
15. Mrz 2010
Beiträge
85
Punkte für Reaktionen
0
Punkte
0
das löschen oder auch drinne stehen lassen von openbase_dir hat nichts bewirkt
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
das löschen oder auch drinne stehen lassen von openbase_dir hat nichts bewirkt

Hast dir auch mit phpinfo() angeschaut, was genau in openbase_dir drinne steht? Du denkst auch dran, das openbase_dir in der /usr/syno/etc/rc.d/S97apache-user.sh zu ändern? Und den user-Apache neu zu starten?

Itari
 

DEDEX7200Pro

Benutzer
Mitglied seit
15. Mrz 2010
Beiträge
85
Punkte für Reaktionen
0
Punkte
0
ich habe nur die php.ini angeschaut. in der S97...sh ist der Inhalt so:

Code:
#!/bin/sh
# Copyright (c) 2000-2006 Synology Inc. All rights reserved.

Httpd="/usr/syno/apache/bin/httpd"
HttpdConf="/usr/syno/apache/conf/httpd.conf"
HttpdSSLConf="/usr/syno/apache/conf/extra/httpd-ssl.conf"
PHPINI="/usr/syno/etc/php.ini"
SynoConf="/etc/synoinfo.conf"
SynoDefConf="/etc.defaults/synoinfo.conf"
PIDFILE="/var/run/httpd-user.pid"
RunHTTPS=`/bin/get_key_value /etc/synoinfo.conf runHTTPS`
HttpPort=`/bin/get_key_value /etc/synoinfo.conf httpport`
SSLKEYGEN="/usr/syno/etc/rc.ssl_keygen"

SZF_PHPINI="/usr/syno/etc/php.ini"
PHPINI_BASEDIR_SERV="/var/services/web:/var/services/photo:/var/services/blog:/var/services/homes"
PHPINI_BASEDIR_DEF="/usr/bin/php:/usr/syno/synoman:/etc:/var/run:/tmp:/var/spool/php:/volume1/@tmp/php:${PHPINI_BASEDIR_SERV}"

GenerateConf()
{
	cp ${HttpdConf}-user ${HttpdConf}
	SupportWeb=`/bin/grep -s ^supportweb /etc.defaults/synoinfo.conf | awk -F \" '{print $2}' | sed 's/ //g'`
	RunWeb=`/bin/grep -s ^runweb /etc/synoinfo.conf | awk -F \" '{print $2}' | sed 's/ //g'`
	RunWebLocal=`/bin/grep -s ^supportweblocaluser /etc/synoinfo.conf | awk -F \" '{print $2}' | sed 's/ //g'`
	for i in `echo ${PHPINI_BASEDIR_SERV} | sed 's/:/\n/g' `; do
		symlink=`ls -ld $i 2>/dev/null | awk '{print $NF}'`
		if [ ! -z $symlink ]; then
			PHPINI_BASEDIR_DEF="${PHPINI_BASEDIR_DEF}:$symlink"
		fi
	done
	open_basedir="`/bin/grep ^open_basedir ${SZF_PHPINI} | cut -d'=' -f2`:${PHPINI_BASEDIR_DEF}"

	if [ "$SupportWeb" = "yes" -a "$RunWeb" = "yes" ]; then
		echo "Include /usr/syno/etc/httpd-vhost.conf-user" >> ${HttpdConf}
		echo "DocumentRoot \"/var/services/web\"" >> ${HttpdConf}
		cat ${HttpdSSLConf}-user > ${HttpdSSLConf}
		echo "Include /usr/syno/etc/httpd-ssl-vhost.conf-user" >> ${HttpdSSLConf}
	else
		echo "DocumentRoot \"/usr/syno/synoman/phpsrc/web\"" >> ${HttpdConf}
		cat ${HttpdSSLConf}-user | sed 's/DocumentRoot "\/var\/services\/web"/DocumentRoot "\/usr\/syno\/synoman\/phpsrc\/web"/g' > ${HttpdSSLConf}
	fi
	if [ "$HttpPort" != "80" ]; then
		echo "Listen $HttpPort" >> ${HttpdConf}
	fi
	if [ "$SupportWeb" = "yes" -a "$RunWebLocal" = "yes" ]; then
		echo "Include /usr/syno/apache/conf/extra/httpd-userdir.conf-user" >> ${HttpdConf}
	fi
	WebmailEnabled=`/bin/get_key_value /etc/synoinfo.conf webmail_enabled`
	SZD_MailStation="/var/packages/MailStation"
	SZD_RoundCube="${SZD_MailStation}/target/roundcubemail"
	if [ "x$WebmailEnabled" = "xyes" -a -f "${SZD_MailStation}/enabled" ]; then
		echo "AliasMatch ^/mail$ \"${SZD_RoundCube}/\"" >> ${HttpdConf}
		echo "Alias /mail/ \"${SZD_RoundCube}/\"" >> ${HttpdConf}
		open_basedir="${open_basedir}:${SZD_RoundCube}"
	fi
	# skip an error message
	open_basedir=`echo ${open_basedir}|sed 's,/source/busybox-1.1.0/synocmds/get_key_value.c (82) Buffer is too small:,,'`
	open_basedir=`echo ${open_basedir}|sed 's/:/\n/g'|sort -u|perl -e 'print join":",map{chomp;$_}<>;'`
	sed "/^open_basedir/c\\open_basedir = ${open_basedir}" ${SZF_PHPINI} > ${SZF_PHPINI}.$$
	mv ${SZF_PHPINI}.$$ ${SZF_PHPINI}
}
CheckPID()
{
	# check for pidfile
	if [ -f $PIDFILE ] ; then
		PID=`cat $PIDFILE`
		if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then
			STATUS="httpd (pid $PID) running"
			RUNNING=1
		else
			STATUS="httpd (pid $PID?) not running"
			RUNNING=0
		fi
	else
		STATUS="httpd (no pid file) not running"
		RUNNING=0
	fi
}

CheckPHPINI()
{
	PHPRegGlobals=`/bin/get_key_value ${SynoConf} phpregisterglobal`
	PHPGlobalsINI=`/bin/get_key_value ${PHPINI} register_globals`
	PHP_APC_shmsize=`/bin/get_key_value ${PHPINI} apc.shm_size`
	APC_shmsize=`/bin/get_key_value ${SynoDefConf} php_cache_size`
	APC_enabled=`/bin/get_key_value ${SynoConf} php_cache_enabled`
	if [ "x$APC_enabled" = "xno" ]; then
		APC_enabled=0
	else
		APC_enabled=1
	fi
	/bin/sed /^apc.enabled/c\\"apc.enabled = ${APC_enabled}" ${PHPINI} > /tmp/php.ini.$$
	if [ "x$PHP_APC_shmsize" = "x0" ]; then
		/bin/sed /^apc.shm_size/c\\"apc.shm_size = ${APC_shmsize}" /tmp/php.ini.$$ > /tmp/php.ini.$$.tmp
		/bin/mv /tmp/php.ini.$$.tmp /tmp/php.ini.$$
	fi
	if [ "$PHPRegGlobals" = "yes" -a "$PHPGlobalsINI" = "Off" ]; then
		echo "Setting \"register_globals = On\" in php.ini"
		/bin/sed /^register_globals/c\\"register_globals = On" /tmp/php.ini.$$ > /tmp/php.ini.$$.tmp
		/bin/mv /tmp/php.ini.$$.tmp /tmp/php.ini.$$
	fi
	/bin/mv /tmp/php.ini.$$ ${PHPINI}
}
CheckPID
CheckPHPINI

case $1 in
[Ss][Tt][Oo][Pp])
	if [ $RUNNING -eq 0 ]; then
		echo $STATUS
	else
		if kill $PID ; then
			echo "$0: user httpd stopped"
		else
			echo "$0: user httpd could not be stopped"
			exit 1;
		fi
	fi

	MAXTRY=30
	i=0
	while [ $i -lt $MAXTRY -a $RUNNING -eq 1 ] ; do
		CheckPID
		if [ $RUNNING -eq 1 ] ; then
			sleep 1
		fi
		i=`expr $i + 1`
	done
	;;
[Ss][Tt][Aa][Rr][Tt])
	$SSLKEYGEN > /dev/null 2>&1
	if [ ! -x "$Httpd" ]; then
		echo "$Httpd is not executable."
		exit 1;
	fi

	PHP_Spool="/var/spool/php"
	TmpDir="/volume1/@tmp/php"
	SupportRAID=`/bin/get_key_value /etc.defaults/synoinfo.conf supportraid`
	case "${SupportRAID}" in
	[Yy][Ee][Ss])
		TmpDir="${PHP_Spool}";;
	esac

	rm -rf ${TmpDir}
	mkdir -p ${TmpDir}
	chmod 1777 ${TmpDir}
	if [ "${TmpDir}" != "${PHP_Spool}" ]; then
		rm -rf ${PHP_Spool}
		ln -sf ${TmpDir} ${PHP_Spool}
	fi
	mkdir -p ${PHP_Spool}/apc
	chmod 1777 ${PHP_Spool}/apc

	# Dir for Blog banner image file. 
	chown -R 1023 /var/services/blog/
	chmod 755 /var/services/blog/

	#clean up Assistant Photo Uploader temp files	
	rm -rf "/var/services/photo/@eaDir/ASST_PHOTO_UPLOAD_TMP_DIR"

	if [ $RUNNING -eq 1 ]; then
		echo "$0 $ARG: httpd (pid $PID) already running"
	else
		GenerateConf
		PHP_PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin"

		startArg=""
		if [ "yes" = "$RunHTTPS" ]; then
			startArg="$startArg -DSSL"
		fi

		echo "Start User Apache Server ....."
		if env TMPDIR=${TmpDir} PATH=${PHP_PATH} $Httpd $startArg; then
			echo "$0: user httpd started"
		else
			echo "$0: user httpd could not be started"
			exit 1;
		fi
	fi
	;;
[Rr][Ee][Ss][Tt][Aa][Rr][Tt])
	if [ $RUNNING -eq 0 ]; then
		$0 start
	else
		$0 stop		
		$0 start
	fi
	;;
[Gg][Rr][Aa][Cc][Ee][Ff][Uu][Ll])
	if [ $RUNNING -eq 0 ]; then
		$0 start
	else
		GenerateConf
		if kill -HUP $PID ; then
			echo "$0: user httpd restarted"
		else
			echo "$0: user httpd could not be restarted"
			exit 1;
		fi
	fi
	;;
*)
	echo "Usage: $0 [start|stop|restart]"
	;;
esac
exit 0;

Ich weiss aber nicht, was ich da wie ändern muss

Edit:
In der php.ini und auch beim Aufruf durch phpinfo() wird folgendes bei open_basedir angezeigt:
Code:
/etc:/tmp:/usr/bin/php:/usr/syno/synoman:/var/packages/MailStation/target/roundcubemail:/var/run:/var/services/blog:/var/services/homes:/var/services/photo:/var/services/web:/var/spool/php:/volume1/@tmp/php:/volume1/homes:/volume1/photo:/volume1/web:
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Du könntest folgendes machen
Code:
[FONT=monospace]
[/FONT]PHPINI_BASEDIR_DEF="/var/services/homes/:/usr/bin/php:..."
und dann den Webserver neustarten
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat