Visualizzazione risultati 1 fino 13 di 13

Discussione: Malfunzionamento PHP (era "Come mai???")

  1. #1
    Guest

    Predefinito Come mai???

    Ciao a tutti.
    Domanda semplice e stupida
    Ho fatto delle pagine in php sviluppandole su linux e funzionano tranquillamente.
    Adesso le provo qui e non vanno. Nello specifico non mi funziona la seguente banale riga:

    $foto = `ls /Images/$dir` ; ---> Non mi restituisce una mazza !

    BOH!!!

    Grazie a tutti
    Ultima modifica di nuct46 : 23-07-2006 alle ore 05.09.04

  2. #2
    Guest

    Predefinito

    la cartella images ha la minuscola di default, te hai messo la maiuscola

  3. #3
    Guest

    Predefinito

    Beh, è possibilissimo che l'abbia rinominata con la maiuscola come ho fatto in alcuni miei siti.. penso che l'errore sia di sintassi, però non conoscendo bene php non posso dire nulla.

    PS: sezione sbagliata

  4. #4
    Guest

    Predefinito

    Ma tu effettui un echo di quella srtinga?
    Cioè, così come l'hai postata è normale che non ti restituisca nulla a video, perchè l'azione si limita ad assegnare un valore ad una variabile.
    Se invece quella stringa la usi come path, prova a togliere gli spazi di troppo:
    'ls/Images/$dir';

    Controlla anche, come suggerito, che il nome della cartella "Images" corrisponda.


    Ciaooo!!!!!!

  5. #5
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Citazione Originalmente inviato da nuct46
    ..banale riga:
    $foto = `ls /Images/$dir` ; ---> Non mi restituisce una mazza !
    Ho molti dubbi / perplessità / curiosità.
    Innanzitutto il codice è molto incompleto per essere indicativo perché quella è solo un'assegnazione di un valore ad una stringa e non deve tornare nulla di suo, immagino verrà usata dopo, magari indicaci il resto del codice.

    La lista delle perplessità:
    1) come mai usi gli apici ` invece di ' per delimitare le stringhe. E' la prima volta che li vedo (se non nelle quesy mysql)
    La mia esperienza finora mi dice che le stringhe vanno delimitate tra doppievirgolette " e apici '
    se uso gli apici non posso schiaffare variabili all'interno ma dovrò concatenare:
    'ls /Images/'.$dir;
    altrimenti uso le doppievirgolette:
    "ls /Images/$dir";
    Se sai che si può usare anche quell'apice saremmo felici di conoscere come (io mi sono sempre basato su http://it.php.net/manual/it/language.types.string.php e non mi sembra si vedere quest'alternativa)

    2) ls che io sappia è il comando per listare i files in una cartella nei sistemi Unix-like.
    Quale uso vuoi farne tramite php? Questo volevi? perché non utilizzare le funzioni apposite di php per ciclare sui files?
    leggi: http://it.php.net/manual/it/function.scandir.php
    è una funzione per php5 e non gira qui su av ma leggiti la sezione:
    "Esempio 2. PHP 4 alternatives to scandir()"

    3) Un percorso locale come "/Images/qualcosa" ci credo che funziona sulla tua macchina ma su Altervista il percorso assoluto per ciascun utente è
    /membri/nomeutente/ o /membri2/nomeutente/

    quindi potrà al massimo essere un path tipo:
    "/membri/nomeutente/Images/$dir"

    facci sapere e ricorda il resto del codice
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum
    1) come mai usi gli apici ` invece di ' per delimitare le stringhe. E' la prima volta che li vedo (se non nelle quesy mysql)
    La mia esperienza finora mi dice che le stringhe vanno delimitate tra doppievirgolette " e apici '
    se uso gli apici non posso schiaffare variabili all'interno ma dovrò concatenare:
    'ls /Images/'.$dir;
    altrimenti uso le doppievirgolette:
    "ls /Images/$dir";
    UH cribbio, non me ne ero accorto! :O


    Ciao!

  7. #7
    Guest

    Predefinito

    gli apici ` servono per effettuare dei comandi al server, e penso che per colpa del safe mode non ti restituisca nulla.

  8. #8
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Io per le chiamate al sistema ho sempre usato -non qui su AV però- l'apposita function:
    system()

    Grazie jostock, mi sono andato ad informare e ho trovato:
    http://it2.php.net/manual/it/languag....execution.php
    dove appunto si indica l'uso dei "backtick" (gli apicetti di cui sopra)
    equivalente di shell_exec()

    Oltre che c'è scritto proprio in quella pagina (linkata qui sopra), ho fatto una prova ad usarli qui su AV, e non restituisce NULLA appunto.
    Non essendo il "nulla" molto indicativo ho impostato i llivello di errori al massimo:
    error_reporting (E_ALL);

    E il messaggio è una notifica che recita:
    Notice: shell_exec() has been disabled for security reasons in ...
    Quindi come detto sopra non è possibile usarli su AV.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  9. #9
    Guest

    Predefinito

    anche io avevo letto le informazioni sulla documentazione ufficiale, ma non ritrovavo più la pagina...

  10. #10
    Guest

    Predefinito

    Grazie a tutti per le risposte. Purtroppo non ho potuto rispondere prima.
    Il resto del codice era:

    $foto = `ls /Images/$dir` ;
    echo "<br>";
    $num_foto= `ls /Images/$dir|wc -l` ;
    $num_pagine=calcola_pagine($num_foto,$num_foto_pag ina);
    echo "Ci sono $num_foto foto nella categoria $dir per un totale di $num_pagine pagine";
    echo "<BR>";
    $array_foto=explode("\n",$foto);

    etc etc...

    Come vi sarete accorti voi stessi non si tratta dunque di questione di maiuscolo o minuscolo, ne tantomeno di path

    Ma allora come posso ovviare??? Visto che qualcuno di voi mi ha risposto che le funzioni per ciclare le directory non funzionano???

    Un' ultima cosa:
    Non essendo il "nulla" molto indicativo ho impostato i llivello di errori al massimo: error_reporting (E_ALL);
    Come si fa???

    Grazie ancora a tutti.
    Ultima modifica di nuct46 : 28-07-2006 alle ore 03.51.21

  11. #11
    Guest

    Predefinito

    come si fa ad impostare i messaggi di errori? configurazione di php e su AV non si puo' modificare...

  12. #12
    Guest

    Predefinito

    per gli errori: su ogni script basta inserire questo codice:
    Codice PHP:
    error_reporting(E_ALL);
    per ciclare le cartelle prova cosi:
    Codice PHP:
    <?
    $dir
    = 'images';
    $foto = array();//array che contiene tutte le immagini
    if( $handle = opendir($dir) )
    {
    while(
    $file = readdir($handle) )
    {
    if(
    $file != '.' && $file != '..' )
    {
    $foto[] = $file;
    }
    }
    }
    closedir($handle);
    $numfoto = count($foto); // restituisce il numero delle foto
    ?>

  13. #13
    Guest

    Predefinito

    Stamattina ho risolto grazie ai vostri consigli.
    Il codice è questo (simile a quello mostrato da jostock):

    $dir='./../Images/Thumbnails/'.$dir;

    $dh = opendir($dir);
    while (false !== ($filename = readdir($dh))) {
    $array_foto[] = $filename;
    }
    sort($array_foto);

    $num_foto= count($array_foto);


    Tutto funzia alla grande.
    Grazie a tutti siete stati gentilissimi.

    Alla prox

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •