Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [PHP] Esecuzione programma su server Apache Linux per la creazione di documento rtf

    Salve a tutti..
    Sto reaalizzando una pagina php per l'utilizzo di Fop da remoto, la quale
    preleva il codice xsl-fo contenuto nella post e lo scrive su di un file
    all'interno della web root. Fin qui tutto funziona regolarmentte.
    I dolori sono arrivati al momento di lanciare l'eseczione di Fop per
    generare il documento rtf da rispedire indietro.

    Quella che segue è la pagina php che ho scritto:
    codice:
    <?
    
      $ip = getenv('REMOTE_ADDR'); //prelevo l'indirizzo IP del mittente
    
      $time = (string)time(); //prelevo il timestamp
    
      $random = (string)rand(1, 1001); //genero un valore casuale tra 1 e 1001
    
      $file_name = $ip."-".$time."-".$random; //genero un nome di file univoco tramite l'identificativo del mittente + data e ora di sistema + numero casuale
    
      
    
      $xsl_fo_input = $_POST["source"]; //memorizzo in xsl_fo_input il sorgente xsl-fo
    
      $f = @fopen($file_name.".fo", "w"); //apre il file in scrittura
    
      @fputs($f,$xsl_fo_input); //scrive la frase nel file tramite $f
    
      @fclose($f); //è importante chiudere il file
    
    
      $command = "fop -fo ".$file_name.".fo -rtf ".$file_name.".rtf";//stringa che contiene il comando da eseguire
    	echo shell_exec($command);//genero il file rtf
    
    ?>
    Ho provato a modificando in diversi modi la stringa passata a shell_exec(), ed ho provato anche con exec(),
    ma non sono riuscito a far niente.... :master:

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    sei su win? linux?
    Controllati i permessi di esecuzione?

    ciao

  3. #3
    OK risolto cambiando i permessi di esecuzione..... (sono su server Linux)
    Scusa se ne approfitto per fare un'altra domanda.
    Adesso che genero il file rtf lo devo spedire a chi lo ha richiesto;
    ho pensato di fare in questo modo:
    codice:
    $rtf_size = filesize($file_name.".rtf");
      $rtf_file_name = $file_name.".rtf";
      
      //invio il file rtf
      header("Content-type: Application/octet-stream");
      header("Content-Disposition: attachment; filename=$rtf_file_name");
      header("Content-Description: Download PHP");
      header("Content-Length: $rtf_size");
      readfile($rtf_file_name);*/
    Che ne pensi?

    Grazie ancora e scusa per il disturbo.....

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    io di solito metto anche questi:
    codice:
          header("Expires: Mon, 12 Jul 1976 06:20:00 GMT");
          header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    
          header("Cache-Control: no-store, no-cache, must-revalidate");
          header("Cache-Control: post-check=0, pre-check=0", false);
    
          header("Pragma: no-cache");
    Dovrebbero servire a essere sicuri che il file che riceve l'utente non provenga dalla cache.

    ciao

  5. #5
    OK
    Grazie tante... Funziona tutto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.