Ma che c'entra allow_url_fopen? Copia i file usando i percorsi assoluti (/server/root/path/to/file/bla.ext) e non l'URL (http://sito/path/to/file/bla.ext).
Ma che c'entra allow_url_fopen? Copia i file usando i percorsi assoluti (/server/root/path/to/file/bla.ext) e non l'URL (http://sito/path/to/file/bla.ext).
Esatto. Il chmod serve per cambiare le autorizazioni.Il chmod non serve solo per cambiare le autorizzazioni? Io sul remoto ho tutte le autorizzazioni per il root, mentre i file di config sono gestiti esclusivamente dal gestore.
Sono d'accordo anche sul fatto che i files di config sono gestiti dal gestore.
Il suggerimento mi è venuto spontaneo, vista questa ultima limitazione, per tentare di risolvere (tentare non significa necessariamente risolvere) il problema.
Infatti se, come dici, alcuni problemi li rilevi in fase di scrittura,
potresti valutare anche questa probabile soluzione.non funziona copy
.......................
non riesco a scrivere questo stream in un file di destinazione sul mio spazio web
Male che vada puoi continuare a fare altri tentativi usando strade alternative.
![]()
Ragazzi vi prego non diciamo stupidaggini, se URL Wrapper sono disabilitati qualsiasi funzione che non utilizzi librerie esterne non funzioneranno per l'uso che lui deve farne.
Pertanto con gli URL Wrappers (ovvero il permesso di collegamenti http://) disabilitati le funzioni: fopen, file_get_contents, file, ecc su indirizzi del tipo http://, https://, ftp://, ecc non funzioneranno mai.
Il mio consiglio è di utilizzare cURL per fare ciò che vuoi sempre che nel tuo spazio siano abilitate.
Curl è abilitato, riesco ad aprire un file come stream di dati (ad esempio una immagine posso aprirla come stream e visualizzarla a video) ma non conosco il metodo per scrivere questo stream su un file di destinazione nel mio spazio web.
Come path io uso path con url per i file esterni che sono la sorgente mentre per i file sul mio spazio web uso ../dir/file.
Il copy() funzionava sulle prove che ho fatto in locale, mentre sul remoto non funziona perchè allow_url_fopen è off.
Mettendo anche sul locale allow_url_fopen = off si sono presentati gli stessi errori.
Usa questo:
Codice PHP:<?php
$file_src = "http://www.sito.ext/path/ecc/file.ext";
$path_file = "path_dove/memorizzare_il/file"; // senza slash finale
$ch = curl_init($file_src);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
$f = file_put_contents($path_file."/".basename($file_src),$res);
if($f){ echo "FILE COPIATO"; }else{ echo "FILE NON COPIATO"; }
?>
QUOTO! ... c-url RULEZ!!!!
E cmq se allow_url_fopen e' settato a false non ci sono ne santi ne madonne nessuna funzione di php aprirà un file in remoto .
Usa curl come suggerito.
Purtoppo da lo stesso errore che genera con tutte le funzioni di tipo Filesystem:Originariamente inviato da MichelangeloSco
Usa questo:
Codice PHP:<?php
$file_src = "http://www.sito.ext/path/ecc/file.ext";
$path_file = "path_dove/memorizzare_il/file"; // senza slash finale
$ch = curl_init($file_src);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
$f = file_put_contents($path_file."/".basename($file_src),$res);
if($f){ echo "FILE COPIATO"; }else{ echo "FILE NON COPIATO"; }
?>
"Warning: file_put_contents(../cache/file.jpg) [function.file-put-contents]: failed to open stream: No such file or directory in..."
Con allow_url_fopen non mi si aprono nemmeno i file del mio spazio web... non so proprio come fare![]()
L'errrore lo da la file_put_contents ... controlla che il file bersaglio esiste e soprattutto che la cartella abbia i permessi di scrittura per le operazioni da server.
dai una cosa del genere
chmod($targetFile, 0777) ;
file_put_contentes.....
chmod($targetFile, 0664) ; // credo sia il valore di default a creazione di 1 file nn ricordo al volo per' correggetemi se e' sbagliato
altrimenti se cosi' nn va dovrai fare il chmod direttamente sulla cartella
chmod($targetDir, 0777) ;
chmod($targetFile, 0777) ;
file_put_contentes.....
chmod($targetFile, 0664) ;
chmod($targetDir, 0664) ;
Risolto:
il path locale con davanti il "../" non veniva accettato, mentre indicando solo il percorso ora tutto funziona con il codice postato da MichelangeloSco.![]()
Grazie a tutti per l'aiuto!