Archive for March, 2010

Zde je ukázka editace httpd.conf, ve které jsou vytvořeny 2 virtualhosty na stejném serveru pro 2 domény. Každý virtualhost může obsahovat virtuální adresáře, ve kterých se specifikuje chování adresáře, např. Options +Indexes umožní listování v adresáři.

Pomocí alias /virtuální_adresář /cesta_na_disku se vytvoří virtuální adresář.

Hosts

Mohu editovat soubor c:\WINDOWS\system32\drivers\etc\hosts. V něm zadat např.:

127.0.0.1 www.example1.com example1.com

S takovým zápisem je zajištěno, že se při zadání domén www.example1.com a example1.com provede poždavek na 127.0.0.1 a ne na veřejné adresy k www.example1.com a example1.com.

Ukázka virtualhostu

ServerName=host
DirectoryIndex= seznam indexových souborů v pořadí oddělených mezerou
<Directory…> = adresář, který bude mít nějaké vlastnosti. tento adresář lze udělat virtuálním přes zápis Alias /adresář /cesta_na_disku

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost *:80>
  ServerName www.example1.com
  DocumentRoot c:/download/zf-tutorial/public
  ErrorLog logs/www.example1.com-error_log
  CustomLog logs/www.example1.com-access_log common
  DirectoryIndex index.php
 
  <Directory c:/download/zf-tutorial/public>
      AllowOverride All
      Allow from All
      Options +Indexes FollowSymLinks
  </Directory>
 
</VirtualHost>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<VirtualHost *:80>
  ServerName net08
  DocumentRoot c:/development
  ErrorLog logs/net08-error_log
  CustomLog logs/net08-access_log common
  DirectoryIndex index.php
  Alias /web c:/Development/phpcore/
  Alias /pokus c:/Download/pokus/
 
    <Directory c:/Development>
      AllowOverride All
      Order allow,deny
      Allow from all
      Options +Indexes
    </Directory>
 
    <Directory c:/Development/phpcore>
      Order allow,deny
      Allow from all
      Options +Indexes
    </Directory>
 
    <Directory c:/Download/pokus>
      Order allow,deny
      Allow from all
      Options +Indexes
    </Directory>
 
</VirtualHost>
Share

PHP umožňuje nastavit výchozí hodnotu pro parametr do funkce(nebo metody). Zápis:

1
function foo($param=20)

způsobí že po zavolání funkce bez předaného parametru

1
foo();

bude ve funkci mít proměnná $param hodnotu 20.

Toto ovšem nebude fungovat v případě, že se zavolá funkce např. takto:

1
foo(null);

Parametr se předá, ovšem obsahuje null, což bude obsahovat i $param.

Ukázka situací, jak záleží na pořadí při předávání parametrů do funkce:

Zde se naplní první parametr(ne až druhý):

1
2
3
4
5
function foo($param1=10,$param2){
   echo "$param1: ".$param1."<br />";
   echo "$param2: ".$param2."<br />";
}
foo(20);

vrátí:
$param1: 20
$param2:

Zde je vidět že při volání s jedním parametrem se druhý doplní jeho výchozí hodnotou:

1
2
3
4
5
function foo2($param1,$param2=20){
   echo "$param1: ".$param1."<br />";
   echo "$param2: ".$param2."<br />";
}
foo2(10);

vrátí:
$param1: 10
$param2: 20

V tomto volání se do $param1 předá null. Není tedy brána výchozí hodnota 10.

1
2
3
4
5
function foo3($param1=10,$param2){
   echo "$param1: ".$param1."<br />";
   echo "$param2: ".$param2."<br />";
}
foo3(null,20);

vrátí:
$param1:
$param2: 20

Výsledkem je tedy to, že parametry s výchozí hodnotou by vždy měli být v posloupnosti psány až za parametry, které výchozí hodnotu neobsahují.

Share

Stalo se mi, že ve WINXP po kliknutí na jakýkoliv PDF soubor v prohlížeči se jak Firefox, tak Internet Explorer neočekávaně ukončili. Na vině je chybná knihovna ace.dll.

Řešením je zkopírovat c:\Program Files\Adobe\Reader 9.0\Reader\ace.dll do c:\WINDOWS\system32\ace.dll. Soubor přepsat.

Otevírání PDF souborů poté začne fungovat ihned bez nutnosti restartu prohlížeče.

Share