-
scrittura sul file
salve
come avrete capito sto usando php per scrivere su file...
innanzitutto io immaginavo che (dal momento che il mio codice php viene eseguito dal server) il file venisse creato automaticamente nel file system del server...
ma ciò non avviene, e per ottenere ciò devo eseguire esplicitamente la funzione link
questo è il codice che uso
Codice PHP:
$file = "theFile.php";
if (!file_exists($file)) {
$filePointer = fopen($file, 'w');
fputs($filePointer, "");
fclose($filePointer);
}
// Scrittura del file
$message = "what a wonderful day"
$writePointer = fopen($file,"w");
fwrite($writePointer, $message);
fclose($writePointer);
// Upload al server
link($file,"/php/");
secondo voi è corretto?
il secondo problema è che non trovo il file $file nel mio file system...
come faccio per salvarne copia anche sul mio pc in un percorso preciso?
(NB. il codice però funziona, perchè se lo scarico manualmente dal server il file è esattamente come dovrebbe essere)
-
C'è della confusione nell'aria, di certo :|
Probabilmente crei il file nel posto sbagliato, e poi con link() aggiungi solo un link la dove ti aspettavi che fosse. Così crei prima "theFile.php" e poi con il link un secondo "php/theFile.php". Occhio anche che un path assoluto come quello su AV non funziona, devi aggiungere come prefisso /membri/tuonick/.
La doppia fopen ed fwrite è inutile, perché fopen() crea automaticamente il file se non esiste. E sinceramente file_put_contents() è assai più comoda.
Se hai di questi dubbi però, rileggiti con attenzione la documentazione di fopen(), ed in aggiunta magari un tutorial sui file in php.
-
effettivamente con queste funzioni è la prima volta che ci lavoro...
seguirò il tuo consiglio... grazie
-
allora..
mi sono documentato un pochino ma ancora non ne vengo a capo...
chiedo quindi ancora l'aiuto di qualcuno un po' più esperto di me...
io uso questo codice
Codice PHP:
public function writeClass() {
$file = "myFile.php";
$message = "ciao a tutti";
// Scrittura del file
$writePointer = fopen($file,"a+");
fwrite($writePointer, $message);
fclose($writePointer);
}
vorrei scrivere il file myFile.php in una cartella ben precisa:
stepone.altervista.org/cartella1/cartella2/myFile.php
il codice scritto prima è eseguito da una funzione che si trova nella cartella cartella2 a sua volta richiamata da una pagina che si trova nella cartella cartella1...
il file alla fine viene scritto nella cartella1
ho anche provato i vari
/cartella2/myFile.php
./cartella2/myFile.php
e qualcun altro che ora non ricordo, ma senza risultati...
dove sbaglio????
__________________________________________
edit:
risolto con:
Citazione:
cartella2/myFile.php
ultima domanda e poi chiudo con questo topic:
io sul pc ovviamente ho un file system identico a quello che ho riportato sul web...
se volessi riportare il file myFile.php appena scritto nella posizione analoga a quella che occupa nel web ma sul mio pc come posso fare?
-
dato che il php è lato server, tutti i comandi che utilizzerai andranno a copiare i file sempre lato server...
facendo alcuni esempi, ci sono diverse funzioni che permettono di scaricare o caricare (i comandi ftp) file o copiare file (vedi la funzione copy), puoi trasferire file anche con fopen, ma il risultato è che saranno sempre trasferiti sul server stesso o su di un altro server...es. puoi utilizzare queste funzioni per fare delle coppie di backup...
l'unica funzione che io conosca per scaricare file in automatico sul pc è l'header di php, manuale:
http://php.net/manual/en/function.header.php
le funzioni ftp di php qui su AV sembrano essere disabilitate(e non capisco il perchè?)
un es. di script per caricare o scaricare file via ftp:
Codice PHP:
<?
$ftp_server="ftp.eurosalute.altervista.org"; //esempio indirizzo ip del sever
$ftp_username="";//specificare username
$ftp_password="";//specificare password
// stabilisco la connessione al server ftp
$ftp_connessione = ftp_connect($ftp_server);
// effetto login sul server
$login = ftp_login($ftp_connessione, $ftp_username, $ftp_password);
// controllo se la connessione ha avuto buon fine
if(!$ftp_connessione || !$login){
echo "<p>Connessione fallita!<br>";
} else {
$filepath='uploaded/';//specificare percorso cartella
$array_files=glob($filepath.'*.*')?glob($filepath.'*.*'):array();
//$count_array_files=count($array_files);
//echo "<p>Num File=$count_array_files";
//echo "<p>Files=";print_r($array_files);
// se connessione ha avuto buon fine faccio UPLOAD del file
if (count($array_files)>0){
foreach ($array_files as $file_da_caricare){
$dove_carire = "/file_php/".$file_da_caricare; //specificare percorso cartella
$upload = ftp_put($ftp_connessione, $dove_carire, $file_da_caricare, get_ftp_mode($file_da_caricare));
// controllo se upload andato a buon fine
if (!$upload) {
echo "<p>Si è verificato un errore durante il caricamento!";
} else {
echo "<p>Upload avvenuto con successo ==> $ftp_server$dove_carire";
}
}//end foreach
}
//se invece voglio effettuare un DOWNLOAD:
$file_da_scaricare = "file_php/uploaded/01.gif";//specificare il percorso e il file
$dove_scaricare = "uploaded/01.gif";//specificare il percorso e il file
$download = ftp_get($ftp_connessione, $dove_scaricare, $file_da_scaricare, get_ftp_mode($file_da_scaricare));
// controllo se download andato a buon fine
if (!$download) {
echo "<p>Si è verificato un errore durante il download!<br>";
} else {
echo "<p>Download avvenuto con successo<br>";
}
// chiudo connessione FTP
ftp_quit($ftp_connessione);
}
?>
quindi, per caricare o scaricare file avrai bisogno di un programma installato sul tuo pc che permetta di collegarsi al server remoto....
come filezilla....in questo caso si collega all'host remoto via FTP (File Transfer Protocol),è un Protocollo per la trasmissione di dati tra host basato su TCP.
quindi, installare sul tuo pc un Web Application Server (Server per Applicazioni Web) specifico, per più info:
http://it.wikipedia.org/wiki/Server_...plicazioni_web
o vedere anche filezilla server:
http://filezilla-project.org/download.php?type=server