Pagina 1 di 2

Ambiente per testare sito in php

Inviato: mar 23 giu 2009, 16:44
da joe
Mi piacerebbe provare a creare un piccolo "sito" basato su php.
Tempo addietro avevo seguito una piccola guida per html, piuttsto facile da comprendere per i neofiti come me su questo sito: www.web-link.it
Adesso vedo che sullo stesso sito c'è anche una guida per php. Vorrei iniziare a seguirla e per fare ciò vorrei mettere in piedi in locale un piccolo ambiente di test in modo da poter creare qualche pagina web e capire come si usa il php.
Quindi sia chiaro, per il momento non ho la necessità di mettere il sito online, darvi accesso dall'esterno o simili...anzi per ovvie ragioni di scurezza non voglio avere un server aperto all'esterno.
Quali possibilità ho per soddisfare queste poche esigenze? Cosa mi serve? possibili alternative ecc ecc.... :D
Grazie in anticipo :)

Re: Ambiente per testare sito in php

Inviato: mar 23 giu 2009, 17:22
da twister
apache
php
eventualmente mysql se ti appoggi a db

Re: Ambiente per testare sito in php

Inviato: mar 23 giu 2009, 18:03
da raffaele181188
Aggiungo a Twister
Ogni distribuzione ha già inclusa tutta questa roba (ma se non ricordo male devi aggiungere qualche riga ad httpd.conf per fargli caricare il modulo php)
Unica cosa da ricordare: a differenza dell'HTML, il php è interpretato (lato server), quindi non puoi visualizzare il "documento" semplicemente aprendolo con un browser, ma devi passare per un webserver, a cui spetta il compito di elaborare la parte php (che nel caso di Apache viene delegata ad un modulo). Cioè per vedere index.php non devi digitare nella barra del browser file://path/to/index.php, ma

Codice: Seleziona tutto

http://localhost/path/to/index.php
(nota il protocollo http. Ovviamente devi configurare httpd per indirizzare le chiamate alla directory specifica)
httpd è il nome del demone webserver, per avviarlo devi dare

Codice: Seleziona tutto

# /etc/rc.d/rc.httpd start
Se non ricordo male all'inizio si hanno un po' di problemi proprio con httpd. Vedi un po'

Re: Ambiente per testare sito in php

Inviato: mar 23 giu 2009, 18:19
da giberg
raffaele181188 ha scritto:Aggiungo a Twister
Ogni distribuzione ha già inclusa tutta questa roba (ma se non ricordo male devi aggiungere qualche riga ad httpd.conf per fargli caricare il modulo php)
Basta decommentare la riga opportuna
in /etc/httpd/httpd.conf

Codice: Seleziona tutto

Include /etc/httpd/mod_php.conf
per avviare apache puoi usare anche
il comando

Codice: Seleziona tutto

apachectl start
per fermarlo ovviamente stop
al posto di start.

Re: Ambiente per testare sito in php

Inviato: mar 23 giu 2009, 19:37
da giberg
Se non sbaglio, per limitare l'accesso
solo in locale, devi permettere
l'accesso solo da 127.0.0.1
impostandolo così:

Codice: Seleziona tutto

<Directory "/srv/httpd/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    #Allow from all
    Allow from 127.0.0.1
</Directory>
In pratica la parte che ti interessa
è Allow from 127.0.0.1

Dovresti farlo anche su queste
righe nel caso tu abbia script cgi-bin:

Codice: Seleziona tutto

<Directory "/srv/httpd/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from 127.0.0.1
  #  Allow from all
</Directory>
Spero sia giusto, magari qualcuno
che conosce meglio di me la questione
potrà confermare o correggere.

Re: Ambiente per testare sito in php

Inviato: mar 23 giu 2009, 20:21
da joe
Installato php, apache, mysql (non ho idea a cosa possa servirmi am va bè, c'era già).
Ho letto questa guida sull'ambiente cossiddetto LAMP: http://slackmania.altervista.org/docume ... ckware.pdf

Se apro:
http://localhost/home/user/web/index.html

ottengo:
Forbidden

You don't have permission to access /home/user/web/index.html on this server.
BooOo...

Re: Ambiente per testare sito in php

Inviato: mar 23 giu 2009, 21:05
da joe
Può essere che il problema sia questo:
nel httpd.conf avevo impostato la voce

#DocumentRoot "/srv/httpd/htdocs"
DocumentRoot "/home/user/web

Questo perchè vorrei creare il sito con i permessi di utnete semplice, senza dovermi loggare come root e poter allo stesso tempo vedere le pagine al volo...Mi spiego?

Ora se tengo la docroot come /srv/httpd/htdocs, le pagine vi metto dentro dovranno essere editate coi privilegi di root...scomodo no?
Io non sono pratico dell'argomento.. Come ci si organizza di solito?

La prima cosa che m'è venuta in mente è stata, creo una dir web nella mia home ci cotruisco il sito e poi indico ad apache che quella dir è la root del sito dove troverà la index.html o .php che sia (...sì ho impostato in httpd.conf le index da cercare: index.php index.php3 index.html index.htm).
Pur avendo riavviato il sito con la nuova root, mi da errore di accesso alla homepage.

Ah, spetta forse ho capito, leggendo il solito file diconfigurazione salta fuori che vine vietato l'accesso a httpd a qualsiasi directory, poi viene abilitato a ciascuna directory che ci serve con per ognuna le funzionalità desiderate

Codice: Seleziona tutto

# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories). 
#
# First, we configure the "default" to be a very restrictive set of 
# features.  
#
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
Ecco poi c'è la sesione seguente che si riferisce alla directory "root" di default del sito:

Codice: Seleziona tutto

# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/srv/httpd/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    #Allow from all
    Allow from 127.0.0.1

</Directory>
Quindi se si sostituisce la directory root, va anche modificato il percorso della sezione precedente, come d'altra parte viene consigliato nel file.
Provo.

Re: Ambiente per testare sito in php

Inviato: mar 23 giu 2009, 21:10
da joe
Ok, così funziona, la root del sito ora è /home/user/web a cui posso accedere coi privilegi d'utente semplice...
Pareri?

Re: Ambiente per testare sito in php

Inviato: mer 24 giu 2009, 9:38
da Naitso
Ciao invece di modificare il file httpd.conf, leggi per Apache:

Codice: Seleziona tutto

/etc/httpd/extra/httpd-userdir.conf
e

Codice: Seleziona tutto

/etc/httpd/extra/httpd-vhosts.conf
e per mysql:

Codice: Seleziona tutto

/etc/rc.d/rc.mysqld
Ciao e buon sviluppo! :thumbright:

Re: Ambiente per testare sito in php

Inviato: mer 24 giu 2009, 14:11
da targzeta
Come suggerito na Naitso nel file di configurazione di apache:

Codice: Seleziona tutto

/etc/httpd/httpd.conf
invece di modificare la directory root, puoi decommentare la riga seguente:

Codice: Seleziona tutto

# User home directories
Include /etc/httpd/extra/httpd-userdir.conf
a questo punto, seguendo le impostazioni del file

Codice: Seleziona tutto

/etc/httpd/extra/httpd-userdir.conf
puoi crearti nella tua home la sottodirectory

Codice: Seleziona tutto

public_html/
e tutte le pagine che inserisci lì dentro saranno raggiungibili all'indirizzo

Codice: Seleziona tutto

http://127.0.0.1/~tuo_utente/pagina
Inoltre puoi anche configurare apache in modo da settare server virtuali in modo da poter accedere alle pagine invece che con

Codice: Seleziona tutto

http://127.0.0.1/~tuo_utente/pagina
con

Codice: Seleziona tutto

http://mio_sito_locale/pagina
Emanuele

Re: Ambiente per testare sito in php

Inviato: mer 24 giu 2009, 18:00
da joe
Intanto grazie, ho modificato come hai detto e pare funzionare.
Una domanda:
perchè se apro 127.0.0.1 vedo la pagina "It works", cioè la index.html presente di default in "/srv/httpd/htdocs/" (che adesso è di nuovo la root di apache)....mentre se apro 127.0.0.1/~user non compare nulla?
Eppure nella web-directory dell'utente /home/user/public_html c'è una index.php, e avevo settato apposta apache affinchè cercasse esplicitamente la homepage tra quelle nominate index.{php,php3,html,htm).
Invece se la apro esplicitamente, così come tutte le altre pagine contenute nella directory public_html, allora funziona (cioè come dicevi 127.0.0.1/~user/index.php così funziona)
Dove sbaglio? O è normale così? Direi che dovrebbe aprire l'homepage in entrambi i casi, sia esplicitandola che no...
Infatti quella "tilde" m'ha fatto venire in mente il sito di AlienBob su slackware.com.
Se apro:
www.slackware.com/~alien
funziona...Tanto come:
www.slackware.com/~alien/index.html

A me in locale invece funge solo la seconda...nel mio caso la homepage del mio semplice utente è chiamata "index.php".
Ho provato anche a rinominarla in .html e ad aggiungere del testo col tag <p>Bla bla bla</p> fuori dal codice php, e sta volta accade una cosa assai strana:
- se mi collego a 127.0.0.1/~user vedo "blablaabla", quindi la pagina desso viene visualizzata senza specificarla
- Ma se la specifico 127.0.0.1/~user/index.html Non si vede nulla! :shock: (che sia apache ad aver fumato un po' troppo pesante?)

Cosa ne pensate?

Re: Ambiente per testare sito in php

Inviato: mer 24 giu 2009, 23:38
da joe
...continuo a non capire dove sta il problema... :roll: :(

Re: Ambiente per testare sito in php

Inviato: gio 25 giu 2009, 0:49
da joe
Ora ho riputlito la directory public_html
Vi ho poi editato due sole pagine per provare:

- index.html

Codice: Seleziona tutto

<html>
<head>
</head>
<body>
<p>prova</p>
</body>
</html>


- index.php

Codice: Seleziona tutto

<html>
<head>
</head>
<body>
<?php
 echo "<p>prova in php</p>"
?>
</body>
</html>
Ora sembra funzionare:

- 127.0.0.1/~user apre la pagina index.php perchè è prioritaria in httpd.conf
- 127.0.0.1/~user/index.html apre la pagina corrispondente senza fare storie
- 127.0.0.1/~user/index.php apre la pagina corrispondente senza fare storie

Insomma ora si può iniziare ad apprendere e costruire qualcosa....

Re: Ambiente per testare sito in php

Inviato: gio 25 giu 2009, 0:56
da targzeta
Mi sembra che anche io avevo avuto il tuo stesso problema, ma non ricordo cosa feci perchè a me va tutto bene. Magari posta l'output di

Codice: Seleziona tutto

grep -v '#' /etc/httpd/httpd.conf
Emanuele

Re: Ambiente per testare sito in php

Inviato: gio 25 giu 2009, 9:32
da joe
In effetti è un mistero, può darsi che il problema stesse nelle pagine che ho rimosso dalla mia directory public_html...chissà.
Posto l'output come consigliato, lo metto in allegato per "pulizia".