2012-03-31 9 views
9

La mia struttura di cartelle è come -creare il file in un'altra directory con PHP

root 
    admin 
    create_page.php 
    pages 
    my_page1.php 
    my_page2.php 

Ho codice per la creazione di un nuovo file php nella cartella "pagine". il codice è come -

$dir_path = "../pages/"; 
$ourFileName = '../'.$page_name.".txt"; 
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file"); 
$ourFileContent = '<?php echo "something..." ?>'; 
if (fwrite($ourFileHandle, $ourFileContent) === FALSE) { 
    echo "Cannot write to file ($filename)"; 
    exit; 
} 

Il codice viene eseguito normalmente..nessun problema. ma la pagina non viene creata. per favore dimmi cosa sto sbagliando. c'è un problema con il percorso? fclose ($ ourFileHandle);

+0

Hai impostato '$ dir_path', ma non lo stai usando. Inoltre non sono sicuro che tu possa usare collegamenti relativi, potresti voler usare il percorso assoluto. Assicurati di aver impostato le autorizzazioni di scrittura sulla mappa scrivendo a. – ArendE

+0

'$ page_name' non è impostato e non hai scritto quale file è – safarov

+0

dove si imposta' $ page_name' anche si ha un errore di sintassi su questa riga '' Non dimenticare il punto e virgola di chiusura –

risposta

18

Ecco un esempio utilizzando il più semplice file_put_contents() wrapper per fopen, fwrite, fclose

<?php 
error_reporting(E_ALL); 

$pagename = 'my_page1'; 

$newFileName = './pages/'.$pagename.".php"; 
$newFileContent = '<?php echo "something..."; ?>'; 

if (file_put_contents($newFileName, $newFileContent) !== false) { 
    echo "File created (" . basename($newFileName) . ")"; 
} else { 
    echo "Cannot create file (" . basename($newFileName) . ")"; 
} 
?> 
1

avete deliberatamente perso la possibilità di concatenare $ dir_path e $ ourFileName;

ora

  1. è la directory/file di writable?
  2. verifica il tuo current working directory
  3. è il tuo error_reporting su?
6
$ourFileHandle = fopen("../pages/" .$ourFileName, 'w') or die("can't open file"); 

Fai il cambiamento di cui sopra per la terza linea e probabilmente funzionerà; L'ho provato e ha funzionato.

+0

funziona per me grazie –

0

Prova questo

$pagename = 'your_filename'; 
$newFileName = '../pages/'.$pagename.".php"; 
+0

Mentre questo codice può rispondere alla domanda, fornire un contesto aggiuntivo per quanto riguarda e/o come questo codice risponde alla domanda migliora la sua valore a lungo termine. – NathanOliver

1

avuto lo stesso problema, file non verrà creato in una cartella con il permesso diversa, assicurarsi che le autorizzazioni delle cartelle sono gli stessi come gli altri file.

+0

Avevi ragione! Ho cambiato i permessi della cartella in cui volevo creare i file con chmod 777 e fopen ha creato il file correttamente. – MaryamH

Problemi correlati