Upload CMSms tramite pagina PHP

La discussione sul CMS Made Simple in italiano.

Moderator: magallo

Post Reply
SgobbiT

Upload CMSms tramite pagina PHP

Post by SgobbiT »

Salve,
ho caricato "CMS made simple" sul mio hosting tramite ftp, il servizio prevede però che possa caricare i file con il mio utente che è diverso da quello d'esecuzione del server Apache, questo mi causa problemi con il CMS dato che mi ritrovo con file e directory di 2 utenti diversi a seconda del fatto che li abbia caricati via FTP o li abbia installati con il "module manager".

Mi è venuta quindi l'idea di avere un programmino che appoggiandosi a uno script php sul server esegua l'upload della directory locale contenente il CMS, così che l'utente che sui file ci lavora (Apache) sia lo stesso che li ha creati (leggere fatto l'upload); esiste già qualcosa del genere? O è necessario scriverlo da zero?

Grazie, ciao.
taxxi
Forum Members
Forum Members
Posts: 92
Joined: Sun May 14, 2006 8:22 pm

Re: Upload CMSms tramite pagina PHP

Post by taxxi »

Ciao,
ho avuto il tuo problema con il safemode del php su on. Non potevo modificare ne uploadare file se l'owner non era lo stesso di apache. Poi mettendolo su off ora va tutto. Hai verificato che il safemode di php sia off? Se lo è ti basta mettere i permessi di lettura scrittura esecuzione e dovrebbe funzionare tutto.

Tax
alby

Re: Upload CMSms tramite pagina PHP

Post by alby »

Personalmente, visto che c'è la possibilità di far girare programmi su un hosting Linux, ho uploadato uno script php (in verità molto più complesso) che fa la scompattazione:

Code: Select all

system('tar jxf cmsms.tar.bz2');
SgobbiT

Re: Upload CMSms tramite pagina PHP

Post by SgobbiT »

taxxi wrote: ho avuto il tuo problema con il safemode del php su on. Non potevo modificare ne uploadare file se l'owner non era lo stesso di apache. Poi mettendolo su off ora va tutto. Hai verificato che il safemode di php sia off? Se lo è ti basta mettere i permessi di lettura scrittura esecuzione e dovrebbe funzionare tutto.
Sono riuscito a uploadare i file sia in FTP (utente mio), e dopo aver modificato i permessi come "777" anche da Apache (utente apache) con il modulo "Module manager".
Però è una seccatura, e ho comunque avuto dei problemi.
alby wrote: Personalmente, visto che c'è la possibilità di far girare programmi su un hosting Linux, ho uploadato uno script php (in verità molto più complesso) che fa la scompattazione:

Code: Select all

system('tar jxf cmsms.tar.bz2');
Non c'avevo pensato, grazie.
Questo script che altro fà?
Azzardo una proposta: Distribuirlo con licenza GPL?

Ciao, grazie.
Last edited by SgobbiT on Tue Jan 02, 2007 10:51 am, edited 1 time in total.
alby

Re: Upload CMSms tramite pagina PHP

Post by alby »

SgobbiT wrote:
alby wrote: Personalmente, visto che c'è la possibilità di far girare programmi su un hosting Linux, ho uploadato uno script php (in verità molto più complesso) che fa la scompattazione:

Code: Select all

system('tar jxf cmsms.tar.bz2');
Non c'avevo pensato, grazie.
Questo script che altro fà?
Azzardo una proposta: Distribuirlo con licenza GPL?
Niente di particolare, è una evoluzione di quei comandi per automatizzare e testare una nuova versione:
- Backup della directory sottostante
- (Ri)Crea la directory sottostante
- Decomprimi cmsms nella directory sottostante
- Copia conf/htaccess nella directory sottostante
- Attiva cmsms nella directory sottostante

dove c'è la possibilità di scegliere la directory. E' più un lavoro di html che php.

Alby
taxxi
Forum Members
Forum Members
Posts: 92
Joined: Sun May 14, 2006 8:22 pm

Re: Upload CMSms tramite pagina PHP

Post by taxxi »

WOW! davvero utile!  ;) ;)
alby

Re: Upload CMSms tramite pagina PHP

Post by alby »

taxxi wrote: WOW! davvero utile!  ;) ;)
Ho capito  8)
ma attenziona, funziona solo sotto linux.
Nella root fare un folder (nel php corrispondente a albytools) e due subfolder (root e backup) di questo.
I config.php copiati da una precedente installazione in quella directory dovranno essere del tipo config.directory.php
Buon divertimento

Code: Select all

<?php

$CWD	= '..';
$PWD	= 'albytools';
$BACKUP	= 'backup';
$ROOT	= 'root';
$DIR_EXCLUDE = array($PWD, 'cgi-bin');


?>
<__html>
 <head>
  <style>
	body { margin:9px; font:11pt Arial,Verdana,sans-serif; font-weight:bold; color:#000; background-color:#def; }
	div.comando { padding:4px; font-weight:normal; color:#fff; background-color:#000; }
  </style>
 </head>

 </__body>
  <div class="comando">
	<pre>
<?php



if ( (isset($_POST['submit'])) AND ($_POST['submit'] == 'GO!') )
{

  if (! empty($_POST['action']))
  {

	$DIR = $_POST['command'];

	switch ($_POST['action'])
	{

	  case 'backdir':
		if (empty($DIR)) {
		  $command = "echo 'Inserire la directory!'";
		}
		elseif ($DIR == 'root')
		{
		  $dump = date('d-m-y_H-i-s') . '.tar.bz2';
		  $tar_exclude = '';
		  foreach ($DIR_EXCLUDE as $dir)
		  {
			$tar_exclude .= ' --exclude='. $dir .'*';
		  }
		  $command = "cd $CWD; /bin/ls -l; tar $tar_exclude -jcf $PWD/$BACKUP/$dump *; /bin/ls -l $PWD/$BACKUP";
		}
		else {
		  $command = "cd $CWD; /bin/rm -rf $DIR.bak; /bin/cp -a $DIR $DIR.bak; /bin/ls -l";
		}
		break;

	  case 'delete':
		if (empty($DIR)) {
		  $command = "echo 'Inserire la directory!'";
		}
		elseif ($DIR == 'root')
		{
		  $array_rm = array();
		  $d = dir($CWD);
		  while ($entry = $d->read())
		  {
			if ( ($entry != '.') && ($entry != '..') && (! in_array($entry, $DIR_EXCLUDE)) )
			{
			  $array_rm[] = $entry;
			}
		  }
		  $d->close();
		  $implode_rm = implode(' ', $array_rm);
		  $command = "cd $CWD; /bin/rm -rf $implode_rm; /bin/ls -l";
		}
		else {
		  $command = "cd $CWD; /bin/rm -rf $DIR; mkdir -p $DIR; /bin/ls -l";
		}
		break;

	  case 'decomp':
		if (empty($DIR)) {
		  $command = "echo 'Inserire la directory!'";
		}
		elseif ($DIR == 'root')
		{
		  $command = "cd $CWD; /bin/tar -jxf $PWD/cmsms.tar.bz2; /bin/ls -l";
		}
		else {
		  $command = "cd $CWD/$DIR; /bin/tar -jxf $CWD/$PWD/cmsms.tar.bz2; /bin/chmod -R a+x *; /bin/ls -l";
		}
		break;

	  case 'config':
		if (empty($DIR)) {
		  $command = "echo 'Inserire la directory!'";
		}
		elseif ($DIR == 'root')
		{
		  $command = "cd $CWD; /bin/cp -a $PWD/config.$DIR.php config.php; /bin/cp -a $PWD/htaccess.txt .htaccess; /bin/ls -l";
		}
		else {
		  $command = "cd $CWD/$DIR; /bin/cp -a $CWD/$PWD/config.$DIR.php config.php; /bin/cp -a $CWD/$PWD/htaccess.txt .htaccess; /bin/ls -l";
		}
		break;

	  case 'install':
		if (empty($DIR)) {
		  $command = "echo 'Inserire la directory!'";
		}
		elseif ($DIR == 'root')
		{
		  $command = "cp -a $ROOT/$DIR/* $CWD/; cd $CWD; mv install __install___; rm -f tmp/cache/*; /bin/ls -l";
		}
		else {
		  $command = "cp -a $ROOT/$DIR/* $CWD/$DIR/; cd $CWD/$DIR; mv install __install___; rm -f tmp/cache/*; /bin/ls -l";
		}
		break;


	  default:		echo 'COMMAND NOT FOUND';

	}



  }

  elseif (! empty($_POST['command']))
  {
	$command = urldecode($_POST['command']);
  }



  if ($_POST['list'])
  {
	echo $command;
  }
  else
  {
	$output = shell_exec($command);
	echo $command ."\n\n". $output;
  }


}

?>

	</pre>
  </div>
  <hr />

  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
	Azione:
	<select name="action">
	  <option value="" selected="selected"> --- SELEZIONA --- </option>
	  <option value="backdir">Backup della directory sottostante</option>
	  <option value="delete">(Ri)Crea la directory sottostante</option>
	  <option value="decomp">Decomprimi cmsms nella directory sottostante</option>
	  <option value="config">Copia conf/htaccess nella directory sottostante</option>
	  <option value="install">Attiva cmsms nella directory sottostante</option>
	</select>

	<br /><br />
	Non eseguire e visualizza il comando: <input type="checkbox" name="list">

	<br /><br />
	Comando/Directory:

	<input type="text" name="command">
	<input type="submit" name="submit" value="GO!">

  </form>

 <__body>
</__html>
Alby
Post Reply

Return to “Italian - Italiano”