Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Sorgenti PHP su hosting Linux su Windows in locale!!

    Salve a tutti,
    dopo varie ricerche su Internet e su questo forum che non hanno dato frutto, ho deciso di illustrarvi il problema che mi attanaglia da quasi una settimana.

    Mi è stato chiesto di "modificare" un sito e-commerce registrato su Energit, quindi Hosting Linux. I sorgenti sono principalmente in PHP, qualcosina di javascript e AJAX. Inoltre ho un database con estensione sql di quasi 300MB (il sito è su da quasi 2 anni).

    La prima cosa che ho fatto è stata quella di installare un ambiente WAMP sul pc su cui dovevo lavorare solo che al momento di caricare il database con phpMyAdmin mi dava una serie di errori sempre uguali (ovviamente avevo già modificato il file php.ini in modo da poter fare l'upload di file di grandi dimensioni).
    Inoltre ho copiato la cartella con i sorgenti dentro la cartella che fungeva da localhost, però andando sul browser e caricando index.php mi fa vedere il codice, nessuna immagine, nessuna scritta, solo codice php, per lo più nemmeno indentato..

    Così preso dallo sconforto ho deciso di disinstallare il WAMP (magari avevo sbagliato qualcosa configurandolo) e installare EasyPhp. Dopo aver modificato il php.ini, ho caricato l'intero database su phpMyAdmin, questa volta senza errori, quindi il primo problema dovrebbe essere risolto. Infatti caricando il sito su dreamweaver e aggiungendo anche il database e la connessione è andata a buon fine, quindi i parametri sono giusti.
    Però rimane sempre il problema che non mi fa vedere l'index.php e se provo a caricare anche le altre pagine, mi scrive codice php sul browser.

    Chi 2 anni fa ha scritto il codice ha lasciato qualche istruzione su come caricare tutti i sorgenti e il database sul sito di Energit, ripeto Hosting Linux. Un'istruzione di queste è il comando da shell

    codice:
    php -f timer.php &
    il comando php funziona in quanto ho aggiunto alla variabile di sistema Path il percorso (questo comando ovviamente lo eseguo spostandomi, nel prompt, nella cartella del file timer.php)
    Mandando in esecuzione l'istruzione mi scrive l'errore "Undefined function mysql_connect", come se l'estensione php_mysql non fosse caricata. Ripeto che le estensioni sono tutte caricate (decommentate dal file php.ini) e poi la gestione delle estensioni di EasyPhp me le fa vedere caricate!

    Da quello che ho capito io lo script timer.php modifica il campo "timer" nella tabella timer del database inserendo il timestamp corrente.
    Infatti nelle istruzioni lasciate da chi ha scritto il codice viene detto di lanciare in modo permanente il task timer.php attraverso il comando sopra citato e di inserirlo anche in etc/rc.local .

    Ho provato a caricare tutto anche in un altro computer ma niente, sempre la stessa storia, il browser visualizza il codice php come se fosse un file di testo!!

    Il mio dubbio è che essendo il codice scritto per Hosting Linux io da Windows non possa visualizzarlo correttamente!!
    E' possibile questo ragionamento? Magari perchè gli include contengono percorsi scritti per la shell di linux (con lo / mentre windows usa \).

    Cosa dovrei fare? Installare Linux e configurarmi un LAMP??
    Magari c'è qualche configurazione strana?
    Mi sono anche chiesto che sarà mai quella & alla fine dell'istruzione!?!?

    Datemi qualche dritta.. Perchè non so piu che fare!
    Nasciamo autodidatti e moriamo autodidatti!

  2. #2
    Il mio dubbio è che essendo il codice scritto per Hosting Linux io da Windows non possa visualizzarlo correttamente!!
    Non prenderla come offesa personale, è solo una constatazione. Se non hai alcuna esperienza di sviluppo PHP, troverai molte difficoltà nel lavoro che ti è stato assegnato.

    Il fatto che il browser visualizzi il codice PHP significa che il web server non è configurato correttamente.

    Il comando "php -f timer.php &" doveva essere molto probabilmente eseguito da un cron per gestire degli eventi schedulati o delle operazioni di manutenzione (pulizia file/database etc.). Il fatto che visualizzi "Undefined function mysql_connect" significa che, o non è abilitata l'estensione per MySQL, oppure che quando lanci il motore PHP, questo non trova il file di configurazione e per questo non carica l'estensione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    15
    Prima di tutto controlla che nel file index.php sia presente il tag <?php, perchè php-4 era di bocca buona gli andava bene anche <? ma passando a php-5 no.
    *BB*

  4. #4
    Non prenderla come offesa personale, è solo una constatazione. Se non hai alcuna esperienza di sviluppo PHP, troverai molte difficoltà nel lavoro che ti è stato assegnato.
    No vabbè, tante no, di più...

    Comunque l'estensione php_mysql.dll è abilitata, per quanto riguarda il file di configurazione non ne ho idea, intendi il php.ini? o un file di configurazione scritto apposta per il sito?

    La mia teoria che su windows non riconoscesse gli slash non va da nessuna parte, xke ho provato 2 minuti fa uno script che include un file presente in un altra cartella e funziona sia con lo / che con \ (ovviamente scritto \\)...

    Quando dici il web server non è configurato correttamente cosa intendi?
    Per configurare WAMP ho seguito la guida di html.it, invece con easyPhp ho solamente aumentato i valori per l'upload dei file..

    Il fatto che non mi trova la funzione mysql_connect della libreria php_mysql può essere imputata al fatto che devo modificare la extension_path dal file php.ini?
    Però a quel punto che percorso dovrei mettere? EasyPhp mi dice che quella libreria è caricata!!

    Ho provato a fare anche uno scriptino veloce veloce con questa istruzione
    Codice PHP:
    $mysql mysql_connect('localhost''root''pass_di_root');
    if(
    $mysql) echo "ok";
    else echo 
    "niente!" 
    E lo script funziona perchè restituisce ok, se invece commento dal php.ini la riga con l'estensione php_mysql.dll mi scrive "niente!" e anche gli errori relativi al fatto che non trova la funzione in quanto da php.ini ho settato la variabile display_errors a On..

    Quindi perchè mai una volta me la carica e un'altra volta no?

    Potrebbe essere la variabile include_path??
    Nasciamo autodidatti e moriamo autodidatti!

  5. #5
    Originariamente inviato da berto3
    Prima di tutto controlla che nel file index.php sia presente il tag <?php, perchè php-4 era di bocca buona gli andava bene anche <? ma passando a php-5 no.
    E già, credo che l'errore sia proprio questo!!
    Tutti i tag sono soltanto <? ... E ho su il Php 5!
    E' stato scritto 2 anni fa...

    Quindi cosa potrei fare?
    Usare la funzione trova e sostituisci di dreamweaver per sostituire <? con <?php ?
    Oppure tornare al 4?

    Dai che forse ci siamo quasi!
    Nasciamo autodidatti e moriamo autodidatti!

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    molto piu semplice

    apri il file php.ini che si presenta come file di testo in cui le opzioni di configurazione si presentano

    opzione=valore

    e abilita l' opzione 'short_open_tag ' a On;

    riavvia Easyphp e tutto riprende il suo corso

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7

  8. #8
    Grazie ragazzi, ha funzionato!!

    Il codice ora lo legge, ho abilitato gli short_tag!
    Appena l'ho messo mi ha visualizzato un sacco di notice riguardanti il fatto che c'erano costanti indefinite in certi file php!

    codice:
    Notice: Use of undefined constant data - assumed 'MYSQL_PASS'
    Mi da la stessa Notice per tutte le costanti tiop MYSQL_USER, MYSQL_HOST, ecc ecc.. tutte quelle costanti che si trovano in un file di configurazione chiamato init.php.

    Il mio problema è che sembra che non riesce a "richiamare" le costanti, per fare un esempio, in un altro file php di un altra cartella c'è questa istruzione
    Codice PHP:
    mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS); 
    (non mi ricordo se l'ordine è quello)
    se lo lascio così non entra nel database, non riesce ad eseguire le query e quindi in home page non visualizza quello che deve visualizzare..
    Se invece modifico quell'istruzione in
    Codice PHP:
    mysql_connect('localhost','root','password_root'); 
    funziona tutto... Stessa cosa per altre costanti che contengono percorsi tipo
    Codice PHP:
    define(URL_IMAGES,"css/images'"
    c'è una funzione che elenca delle immagini, e con la costante sopra riportata non funziona!
    Se poi ci metto il vero percorso funziona perfettamente!

    Quindi vorrei sapere come mai non riesce a trovare le costanti!
    Magari sono definite in modo sbagliato?

    Ricordo che il codice è stato scritto tempo fa e con una versione di PHP vecchia, probabilmente il 4!
    Nasciamo autodidatti e moriamo autodidatti!

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    è un problema (se così si può definire) meno allarmante di quello che pensi

    si tratta di una forma di scrittura non prettamente corretta in php..

    lo stesso problema, tanto per intenderci potrei averlo anche io se invece di

    Codice PHP:
     $pippo=$array['pluto'];  // nota gli apici 
    scrivessi

    Codice PHP:
     $pippo=$array[pluto];  // nota gli apici 
    otterei un messaggio molto simile al tuo (Notice, Notizia)

    controlla dove vengono definite le costanti nello script e utilizza gli apici... vedrai che dopo funziona (salvo altri errori )

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10

    Problema risolto.. MA??

    Il problema stava proprio nella sintassi. Essendo il programma scritto in PHP 4 la sintassi
    Codice PHP:
    define(COSTANTE,"xxx"); 
    è errata, mentre quella corretta sarebbe questa
    Codice PHP:
    define("COSTANTE","xxx"); 
    Il problema è che, siccome sto modificando del codice scritto precedentemente, dovrei andare a modificare centinaia di costanti e centinaia di vettori in modo che non mi notifichi più niente e riesca a vedermi le costanti!

    Quindi mi chiedevo se ci fosse un modo, magari modificando il file php.ini, per far funzionare il tutto! Io ho installato PHP 5, il codice è stato scritto con una versione precedente (probabilmente il 4).

    L'unico modo sarà quello di disinstallare PHP 5, reinstallare PHP 4 in modo da non aver piu nessuna notice??
    Nasciamo autodidatti e moriamo autodidatti!

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.