Newsgroup: it.comp.www.php
Titolo: Problema php linux

Salve.
Ho un problema gravissimo.
Uno script php che su serwer web apache windows gira benissimo ma su server
apache linux non ne vuol sapere.
Il codice è questo, perchè non và? sembra che non voglia saperne di aprire
il file:
<html>
<head>
<title>Database Alunni I.T.I.S. E. Majorana</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><b><font color="#FF0000">Database Alunni I.T.I.S. E.
Majorana</font></b></p>
<form name="formscelta" method="post" action="">
  <select name="scegliclasse">
    <option value="ScegliCl">Scegli Classe</option>
<?php
  $fp=fopen("Alunni.txt","r");
  $classi="";
  while (!feof($fp)) {
    $arr=explode(";",fgets($fp));
    $str=$arr[2].$arr[3];
    if (!strstr($classi,$str)) $classi=$classi.$str.";";
  }
  fclose($fp);
  $classi=substr($classi,0,strlen($classi)-1);
  $vet=explode(";",$classi);
  sort($vet);
  for ($i=0; $i<count($vet); $i++) {
    echo '<option value="'.$vet[$i].'">'.$vet[$i].'</option>';
  }
?>
    <option value="Tutte">Tutte</option>
  </select>
  <input type="submit" name="Submit" value="Invia">
</form>
<table width="100%" border="3" bordercolor="#GG0000">
  <tr bgcolor="#FF0000">
    <td>Matricola</td>
    <td>Anno</td>
    <td>Classe</td>
    <td>Sezione</td>
    <td>Cognome</td>
    <td>Nome</td>
  </tr>
<?php
  $fp=fopen("Alunni.txt","r");
  $i=0;
  while (!feof($fp)) {
    $arr=explode(";",fgets($fp));
    if ($scegliclasse==$arr[2].$arr[3]) {
      if ($i%2) echo '<tr bgcolor="#3399FF">';
      else echo '<tr bgcolor="#CCFF00">';
      $i++;
      echo
"<td>".$arr[0]."</td><td>".$arr[1]."</td><td>".$arr[2]."</td><td>".$arr[3]."
</td><td>".$arr[4]."</td><td>".$arr[5]."</td></tr>";
    }
    if ($scegliclasse=="Tutte") {
      if ($i%2) echo '<tr bgcolor="#3399FF">';
      else echo '<tr bgcolor="#CCFF00">';
      $i++;
      echo
"<td>".$arr[0]."</td><td>".$arr[1]."</td><td>".$arr[2]."</td><td>".$arr[3]."
</td><td>".$arr[4]."</td><td>".$arr[5]."</td></tr>";
    }
  }
  fclose($fp);
  echo '<b><font color="#00793D">';
  if (strlen($scegliclasse)==2)
    echo "<b>Hai Scelto Di Visualizzare Gli Alunni Della Classe
$scegliclasse<br>";
  else if (strlen($scegliclasse)==5)
    echo "Hai Scelto Di Visualizzare Gli Alunni Di Tutte Le Classi<br>";
  else
    echo "Devi Scegliere Una Classe<br><br>";
  if ((strlen($scegliclasse)==2) || (strlen($scegliclasse)==5))
    echo "Sono Stati Trovati $i Alunni<br><br>";
  echo '</b></font>';
?>
</table>
</body>
</html>
Grazie

 apache linux non ne vuol sapere.
Premesso che non ho guardato il tuo script, ma che se funzia sotto winzoz do
per scontato sia giusto, verifica che:
1) il server web abbia il diritto di lettura sul file e sulla directory che
vuoi leggere
2) la versione di php di winzoz sia <= a quella di Linux
3) tu non abbia usato funzioni presenti solo sotto winzoz
Eventualmente posta il messaggio di errore.
Ciao,
Nico

 il file:
Premesso che senza il messaggio d'errore è difficile dare una risposta, mi
baso sulla tua supposizione.
Sei sotto Linux ed i file hanno i permessi di accesso.
Probabilmente il tuo file non ha i giusti permessi di lettura.
Entra nella directory e digita ll per vedere i permessi.
Proprietario e gruppo dovresti essere tu.
Prova a mettere i permessi a tutti: chmod 744 Alunni.txt
Ciao
Marco

Ringrazio tutti per la risposta:
Aggiungo che i server web relativi sono le ultime versioni.
Su windows funziona, su linux carica all'infinito la pagina e con netscape
(dove viene visualizzato il totale dei k caricati) esce che sta caricando
8000 e passa k cioè 8 mb quando la pagina risultante ne occupa poco più di
30.
Ho cambiato i permessi di accesso ma niente.
Le funzioni di sistema usate sono solo la fopen e fgets che credo siano
compatibili tra i due os...
Che altro può essere?
Grazie


wrote:
Questo debugga e usa meno il file system, quindi _forse_ funziona anche
su quell'ammasso di cesio e liquami che e' Windows.
<html>
<head>
<title>Database Alunni I.T.I.S. E. Majorana</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><b><font color="#FF0000">Database Alunni I.T.I.S.
E.Majorana</font></b></p>
<form name="formscelta" method="post" action="">
  <select name="scegliclasse">
    <option value='-'>Scegli Classe</option>
<?php
	error_reporting(E_ALL);
	if (!isset($_REQUEST['scegliclasse']))
		$scegliclasse = '';
	else
		$scegliclasse = $_REQUEST['scegliclasse'];
	$data = file('Alunni.txt');
	$alunni = array();
	$classi = array();
	$bg	= '#ccff00';
	$scelti	= <<< SCELTI
<table width="100%" border="3" bordercolor="#GG0000">
  <tr bgcolor="#FF0000">
    <td>Matricola</td>
    <td>Anno</td>
    <td>Classe</td>
    <td>Sezione</td>
    <td>Cognome</td>
    <td>Nome</td>
  </tr>
SCELTI;
	$found	= 0;
	print '<!-- Sono stati letti ' . count($data) . ' record. -->';
	foreach($data as $riga)
	{
		$arr = explode(';', $riga);
		$alunni[] = $arr;
		$str = $arr[2].$arr[3];
		if (!isset($classi[$str]))
			$classi[] = $str;
		if ($scegliclasse == $str || ($scegliclasse == 'Tutte'))
		{
			if ($bg == '#3399ff')
				$bg = '#ccff00';
			else
				$bg = '#3399ff';
			$scelti .= "<tr bgcolor=\"$bg\">\n";
			foreach($arr as $col)
				$scelti .= "\t<td>$col</td>\n";
			$scelti .= "</tr>\n";
			$found++;
		}
	}
	$scelti .= '</table>';
	sort($classi);
	$classi[] = 'Tutte';
	foreach($classi as $classe)
	{
		$sel = ($scegliclasse == $classe) ? ' selected' : '';
		echo "<option$sel>$classe</option>\n"; 
	}
?>
</select><input type="submit" name="Submit" value="Invia">
</form>
<b><font color="#00793D">
<?
	switch($scegliclasse)
	{
		case '-':
			echo 'Devi scegliere una classe';
		case '':
			$found = -1;
			break;
		case 'Tutte':
			print $scelti;
			echo 'Hai Scelto di Visualizzare Gli Alunni ';
			echo 'di tutte le classi';
			break;
		default:
			print $scelti;
			echo 'Hai Scelto di Visualizzare Gli Alunni ';
			echo "Della Classe $scegliclasse";
			break;
	}
	echo '<br/>';
       switch($found)
        {
                case -1:
                        break;
                case 0:
			// This is a bug. How did we get here?
                        echo 'Non &egrave; stato trovato alcun
alunno?<br/>';
                        break;
                case 1:
                        echo '&Egrave; stato trovato un solo
alunno<br/>';
                        break;
                default:
                        echo "Sono Stati Trovati $found Alunni<br><br>";
        }
?>
</b></font>
</body>
</html>
Leonardo

 Grazie
da cio' che dici pare che ecceda qualche time out.
Puoi dare un occhio ai parametri di configurazione dell'apache?
ovviamente suppongo che tu stia lavorando in locale/intranet, e corretta la 
mia supposizione?
ciao

Ciao,
ho adattato il tuo script alle mie esigenze.
Su windows va a meraviglia ma su linux mi ricarica la stessa pagina senza
variazioni.
Che diamine puň essere?
<html>
<head>
<title>Database Alunni I.T.I.S. E. Majorana</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><b><font color="#FF0000">Database Alunni I.T.I.S.
E.Majorana</font></b></p>
<form name="formscelta" method="post" action="">
  <select name="scegliclasse">
    <option value='-'>Scegli Classe</option>
<?php
error_reporting(E_ALL);
if (!isset($_REQUEST['scegliclasse'])) $scegliclasse='';
else $scegliclasse=$_REQUEST['scegliclasse'];
$scelti=<<<SCELTI
<table width="100%" border="3" bordercolor="#GG0000">
  <tr bgcolor="#FF0000">
    <td>Matricola</td>
    <td>Anno</td>
    <td>Classe</td>
    <td>Sezione</td>
    <td>Cognome</td>
    <td>Nome</td>
  </tr>
SCELTI;
$data=file('Alunni.txt');
$elenco='';
foreach($data as $riga) {
  $arr=explode(';',$riga);
  $str=$arr[2].$arr[3];
  if (!strstr($elenco,$str)) $elenco=$elenco.$str.";";
}
$elenco=substr($elenco,0,strlen($elenco)-1);
$classi=explode(";",$elenco);
$classi[]='Tutte';
foreach($classi as $classe) {
  $sel=($scegliclasse==$classe)?' selected':'';
  echo "<option$sel>$classe</option>\n";
}
$bg='#CCFF00';
$found=0;
print '<!-- Sono Stati Letti '.count($data).' Record. -->';
foreach($data as $riga) {
  $arr=explode(';',$riga);
  $str=$arr[2].$arr[3];
  if (($scegliclasse==$str) || ($scegliclasse=='Tutte')) {
    if ($bg=='#3399FF') $bg='#CCFF00';
    else $bg='#3399FF';
    $scelti.="<tr bgcolor=\"$bg\">\n";
    for ($i=0; $i<6; $i++)
      $scelti.="\t<td>".$arr[$i]."</td>\n";
    $scelti.="</tr>\n";
    $found++;
  }
}
$scelti.='</table>';
?>
</select><input type="submit" name="Submit" value="Invia">
</form>
<b><font color="#00793D">
<?
switch($scegliclasse) {
  case '-':
  echo 'Devi Scegliere Una Classe';
  break;
  case 'Tutte':
  print $scelti;
  echo 'Hai Scelto di Visualizzare Gli Alunni Di Tutte Le Classi';
  echo "<br>Sono Stati Trovati $found Alunni";
  break;
  default:
  print $scelti;
  echo 'Hai Scelto di Visualizzare Gli Alunni Della Classe '.$scegliclasse;
  echo "<br>Sono Stati Trovati $found Alunni";
  break;



Leonardo macellaio