mirror of
https://github.com/php/doc-pl.git
synced 2026-03-23 22:52:11 +01:00
Translate some pages of the FAQ section
I was going to translate more but it turns out the FAQ is very outdated, so let's start with other priorities first.
This commit is contained in:
489
faq/build.xml
Normal file
489
faq/build.xml
Normal file
@@ -0,0 +1,489 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: b8e1b1357def73f310c9f7405035b3acc0cb1eaf Maintainer: sobak Status: wip -->
|
||||
<!-- TODO: Dokończyć jak komuś będzie się nudzić :) zacząłem tłumaczyć, ale ten plik jest starożytny, nikt z tego nie skorzysta -->
|
||||
<chapter xml:id="faq.build" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Problemy z kompilacją</title>
|
||||
<titleabbrev>Problemy z kompilacją</titleabbrev>
|
||||
|
||||
<para>
|
||||
Ta sekcja zbiera najczęstsze błędy, które występują
|
||||
w trakcie kompilacji.
|
||||
</para>
|
||||
|
||||
<qandaset>
|
||||
<qandaentry xml:id="faq.build.configure">
|
||||
<question>
|
||||
<para>
|
||||
Pobrałem najnowszą wersję PHP używając anonimowej usługi Git,
|
||||
ale nie widzę skryptu configure!
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Musisz mieć zainstalowaną paczkę GNU autoconf, aby móc
|
||||
wygenerować skrypt configure z pliku <filename>configure.in</filename>. Uruchom
|
||||
<command>./buildconf</command> w głównym katalogu po pobraniu
|
||||
źródeł z serwera Git. Ponadto, o ile nie uruchomisz <command>configure</command>
|
||||
z flagą <literal>--enable-maintainer-mode</literal>, skrypt
|
||||
configure nie zostanie przebudowany automatycznie kiedy plik
|
||||
<filename>configure.in</filename> zostanie zaktualizowany, więc upewnij się, że robisz to
|
||||
ręcznie, kiedy zauważysz, że plik <filename>configure.in</filename> się zmienił. Jednym z objawów
|
||||
takiej sytuacji jest znajdowanie fragmentów takich jak @VARIABLE@ w pliku Makefile
|
||||
po uruchomieniu configure lub <filename>config.status</filename>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.configuring">
|
||||
<question>
|
||||
<para>
|
||||
Mam problem w skonfigurowaniu PHP, aby działał z Apache.
|
||||
Błąd mówi, że nie można znaleźć <filename>httpd.h</filename>, ale jest tam, gdzie powiedziałem, że jest!
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Musisz podać skryptowi configure/setup lokalizację
|
||||
głównego katalogu źródeł Apache. Oznacza to,
|
||||
że chcesz podać <option
|
||||
role="configure">--with-apache=/sciezka/do/apache</option>
|
||||
a <emphasis>nie</emphasis> <option
|
||||
role="configure">--with-apache=/sciezka/do/apache/src</option>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.lex">
|
||||
<question>
|
||||
<para>
|
||||
Podczas konfiguracji PHP (<literal>./configure</literal>) napotkałeś na
|
||||
błąd podobny do tego:
|
||||
</para>
|
||||
<para>
|
||||
<screen>
|
||||
checking lex output file root... ./configure: lex: command not found
|
||||
configure: error: cannot find output from lex; giving up
|
||||
</screen>
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Upewnij się, że przeczytałeś instrukcje <link linkend="install.unix">instalacji</link>
|
||||
dokładnie i zwróć uwagę, że potrzebujesz mieć zainstalowane zarówno
|
||||
paczki flex i bison, aby skompilować PHP. W zależności od Twojego środowiska
|
||||
paczki bison i flex zainstalujesz ze źródeł lub z paczek, takich jak RPM.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.apache-sharedcore">
|
||||
<question>
|
||||
<para>
|
||||
Kiedy próbuję wystartować Apache, otrzymuję następujący komunikat:
|
||||
</para>
|
||||
<para>
|
||||
<screen>
|
||||
fatal: relocation error: file /path/to/libphp4.so:
|
||||
symbol ap_block_alarms: referenced symbol not found
|
||||
</screen>
|
||||
</para> </question>
|
||||
<answer>
|
||||
<para>
|
||||
Ten błąd zazwyczaj pojawia się gdy główny program Apache
|
||||
został skompilowany jako biblioteka DSO do użycia współdzielonego. Spróbuj
|
||||
zrekonfigurować Apache, upewnij się, że używasz przynajmniej
|
||||
następujących flag:
|
||||
</para>
|
||||
<para>
|
||||
<screen>
|
||||
--enable-shared=max --enable-rule=SHARED_CORE
|
||||
</screen>
|
||||
</para>
|
||||
<para>
|
||||
Po więcej informacji przeczytaj plik
|
||||
<filename>INSTALL</filename> w głównym katalogu źródeł
|
||||
Apache lub stronę manuala Apache
|
||||
<link xlink:href="&url.apachedso;">poświęconą DSO</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.not-found">
|
||||
<question>
|
||||
<para>
|
||||
Kiedy uruchamiam configure, komunikat mówi, że nie udało się znaleźć
|
||||
plików include lub biblioteki dla GD, gbm lub innej paczki!
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Możesz sprawić, że skrypt configure będzie szukał plików nagłówków i bibliotek
|
||||
w niestandardowych lokalizacjach używając dodatkowych flag do przekazania
|
||||
do preprocesora C oraz linkera, takich jak:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
|
||||
]]>
|
||||
</programlisting>
|
||||
Jeśli używasz powłoki w wariancie csh (po co?), będzie to:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.yytname">
|
||||
<question>
|
||||
<para>
|
||||
Podczas kompilacji pliku <filename>language-parser.tab.c</filename> otrzymuję błędy
|
||||
mówiące <literal>yytname undeclared</literal>.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Musisz zaktualizować Twoją wersję Bisona. Możesz znaleźć najnowszą wersję
|
||||
pod adresem <link xlink:href="&url.bison;">&url.bison;</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.link">
|
||||
<question>
|
||||
<para>
|
||||
Kiedy uruchamiam <command>make</command>, wydaje się, że działa w porządku, ale potem następuje błąd
|
||||
podczas próby linkowania finalnej aplikacji, mówiący, że nie udało się znaleźć jakichś plików.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Niektóre stare wersje make, niepoprawnie umieszczają skompilowane
|
||||
wersje plików z katalogu functions w tym samym katalogu.
|
||||
Spróbuj uruchomić <command>cp *.o functions</command> a potem
|
||||
uruchom <command>make</command> ponownie i zobacz, czy to pomogło. Jeśli tak, to powinieneś
|
||||
naprawdę zaktualizować wersję GNU make.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.undefined">
|
||||
<question>
|
||||
<para>
|
||||
Podczas linkowania PHP, pojawia się błąd o niezdefiniowanych referencjach.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Spójrz na linię linkowania i upewnij się, że wszystkie potrzebne
|
||||
biblioteki zostały dołączone na jej końcu. Często zdarza się pominięcie
|
||||
'-ldl' i bibliotek wymaganych dla obsługi bazy danych,
|
||||
którą wybrałeś.
|
||||
</para>
|
||||
<para>
|
||||
Niektórzy użytkownicy zgłaszali też, że musieli dodać '-ldl' bezpośrednio
|
||||
po <filename>libphp4.a</filename> podczas linkowania z Apache.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.not-running">
|
||||
<question>
|
||||
<para>
|
||||
Przeszedłem przez wszystkie kroki instalacji modułu Apache w wersji na
|
||||
Unix, ale moje skrypty PHP pokazują się w przeglądarce lub pokazuje się
|
||||
okno zapisu pliku.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
To oznacza, że moduł PHP nie jest wywoływany z jakiegoś powodu.
|
||||
Przed poproszeniem o pomoc należy sprawdzić trzy rzeczy:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Upewnij się, że plik httpd, którą uruchamiasz jest faktycznie
|
||||
nowym plikiem binarnym httpd, kóry właśnie skompilowałeś. Aby to zrobić uruchom:
|
||||
<literal>/path/to/binary/httpd -l</literal>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Jeżeli nie widzisz <filename>mod_php4.c</filename> wymienionego, to
|
||||
nie uruchamiasz poprawnego pliku binarnego. Znajdź i zainstaluj
|
||||
poprawny plik binarny.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Upewnij się, że dodałeś poprawny typ Mime do jednego z Twoich plików
|
||||
<literal>Apache .conf</literal>. Powinno to być:
|
||||
<literal>AddType application/x-httpd-php .php</literal>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Upewnij się też, że ta linia AddType nie jest ukryta wewnątrz
|
||||
bloku <Virtualhost> lub <Directory>, który
|
||||
zapobiegłby użyciu jej dla lokalizacji Twojego skryptu testowego.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
W końcu, domyślna lokalizacja plików konfiguracyjnych Apache
|
||||
zmieniła się między Apache 1.2 i Apache 1.3. Powinieneś sprawdzić
|
||||
i upewnić się, że plik konfiguracyjny, w którym dodajesz linię z
|
||||
AddLine jest faktycznie odczytywany. Możesz umieścić oczywisty błąd składniowy
|
||||
wewnątrz pliku &httpd.conf; lub inną zmianę, która
|
||||
powie Ci, czy odczytywany jest poprawny plik.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.activate-module">
|
||||
<question>
|
||||
<para>
|
||||
It says to use: <literal>--activate-module=src/modules/php4/libphp4.a</literal>,
|
||||
but that file doesn't exist, so I changed it to
|
||||
<literal>--activate-module=src/modules/php4/libmodphp4.a</literal> and it
|
||||
doesn't work!? What's going on?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Note that the <filename>libphp4.a</filename> file is not supposed to exist. The
|
||||
apache process will create it!
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.ansi">
|
||||
<question>
|
||||
<para>
|
||||
When I try to build Apache with PHP as a static module using
|
||||
<literal>--activate-module=src/modules/php4/libphp4.a</literal>
|
||||
it tells me that my compiler is not ANSI compliant.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
This is a misleading error message from Apache that has been fixed
|
||||
in more recent versions.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.apxs">
|
||||
<question>
|
||||
<para>
|
||||
When I try to build PHP using <option
|
||||
role="configure">--with-apxs</option> I get strange error messages.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
There are three things to check here. First, for some reason
|
||||
when Apache builds the apxs Perl script, it sometimes ends up
|
||||
getting built without the proper compiler and flags variables.
|
||||
Find your apxs script (try the command <command>which apxs</command>),
|
||||
it's sometimes found in <filename>/usr/local/apache/bin/apxs</filename>
|
||||
or <filename>/usr/sbin/apxs</filename>.
|
||||
Open it and check for lines similar to these:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
my $CFG_CFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl
|
||||
my $CFG_LD_SHLIB = ' '; # substituted via Makefile.tmpl
|
||||
my $CFG_LDFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl
|
||||
]]>
|
||||
</programlisting>
|
||||
If this is what you see, you have found your problem. They may
|
||||
contain just spaces or other incorrect values, such as 'q()'. Change
|
||||
these lines to say:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl
|
||||
my $CFG_LD_SHLIB = 'gcc'; # substituted via Makefile.tmpl
|
||||
my $CFG_LDFLAGS_SHLIB = q(-shared); # substituted via Makefile.tmpl
|
||||
]]>
|
||||
</programlisting>
|
||||
The second possible problem should only be an issue on Red Hat 6.1
|
||||
and 6.2. The apxs script Red Hat ships is broken. Look for this line:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install
|
||||
]]>
|
||||
</programlisting>
|
||||
If you see the above line, change it to this:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install
|
||||
]]>
|
||||
</programlisting>
|
||||
Last, if you reconfigure/reinstall Apache, add a <command>make clean</command>
|
||||
to the process after <command>./configure</command> and before <command>make</command>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.microtime">
|
||||
<question>
|
||||
<para>
|
||||
During <command>make</command>, I get errors in microtime,
|
||||
and a lot of <literal>RUSAGE_</literal> stuff.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
During the <command>make</command> portion of installation,
|
||||
if you encounter problems that look similar to this:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
microtime.c: In function `php_if_getrusage':
|
||||
microtime.c:94: storage size of `usg' isn't known
|
||||
microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function)
|
||||
microtime.c:97: (Each undeclared identifier is reported only once
|
||||
microtime.c:97: for each function it appears in.)
|
||||
microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)
|
||||
make[3]: *** [microtime.lo] Error 1
|
||||
make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'
|
||||
make[2]: *** [all-recursive] Error 1
|
||||
make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'
|
||||
make[1]: *** [all-recursive] Error 1
|
||||
make[1]: Leaving directory `/home/master/php-4.0.1/ext'
|
||||
make: *** [all-recursive] Error 1
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
<para>
|
||||
Your system is broken. You need to fix your <filename>/usr/include</filename> files by
|
||||
installing a glibc-devel package that matches your glibc. This has
|
||||
absolutely nothing to do with PHP. To prove this to yourself, try this
|
||||
simple test:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
$ cat >test.c <<X
|
||||
#include <sys/resource.h>
|
||||
X
|
||||
$ gcc -E test.c >/dev/null
|
||||
]]>
|
||||
</programlisting>
|
||||
If that spews out errors, you know your include files are messed up.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.mysql.tempnam">
|
||||
<question>
|
||||
<para>
|
||||
When compiling PHP with MySQL, configure runs fine but during
|
||||
<literal>make</literal> I get an error similar to the following:
|
||||
<emphasis>ext/mysql/libmysqlclient/my_tempnam.o(.text+0x46): In function
|
||||
my_tempnam': /php4/ext/mysql/libmysqlclient/my_tempnam.c:103: the
|
||||
use of tempnam' is dangerous, better use mkstemp'</emphasis>,
|
||||
what's wrong?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
First, it's important to realize that this is a <literal>
|
||||
Warning</literal> and not a fatal error. Because this is
|
||||
often the last output seen during <literal>make</literal>,
|
||||
it may seem like a fatal error but it's not. Of course, if
|
||||
you set your compiler to die on Warnings, it will. Also
|
||||
keep in mind that MySQL support is enabled by default.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
As of PHP 4.3.2, you'll also see the following text after
|
||||
the build (make) completes:
|
||||
</para>
|
||||
<para>
|
||||
<screen>
|
||||
Build complete.
|
||||
(It is safe to ignore warnings about tempnam and tmpnam).
|
||||
</screen>
|
||||
</para>
|
||||
</note>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.upgrade">
|
||||
<question>
|
||||
<para>
|
||||
I want to upgrade my PHP. Where can I find the <command>./configure</command>
|
||||
line that was used to build my current PHP installation?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Either you look at config.nice file, in the source tree of your current PHP
|
||||
installation or, if this is not available, you simply run a
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php phpinfo(); ?>
|
||||
]]>
|
||||
</programlisting>
|
||||
script. On top of the output the <command>./configure</command> line, that was used
|
||||
to build this PHP installation is shown.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.build.gdlibs">
|
||||
<question>
|
||||
<para>
|
||||
When building PHP with the GD library it either gives strange compile errors
|
||||
or segfaults on execution.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Make sure your GD library and PHP are linked against the same depending
|
||||
libraries (e.g. libpng).
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.installation.needgnu">
|
||||
<question>
|
||||
<para>
|
||||
When compiling PHP I seemingly get random errors, like it hangs.
|
||||
I'm using Solaris if that matters.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Using non-GNU utilities while compiling PHP may cause problems. Be
|
||||
sure to use GNU tools in order to be certain that compiling PHP will
|
||||
work. For example, on Solaris, using either the SunOS BSD-compatible
|
||||
or Solaris versions of <literal>sed</literal> will not work, but using
|
||||
the GNU or Sun POSIX (xpg4) versions of <literal>sed</literal> will
|
||||
work. Links: <link xlink:href="&url.sed;">GNU sed</link>,
|
||||
<link xlink:href="&url.flex;">GNU flex</link>, and
|
||||
<link xlink:href="&url.bison;">GNU bison</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
</qandaset>
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:t
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
194
faq/passwords.xml
Normal file
194
faq/passwords.xml
Normal file
@@ -0,0 +1,194 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: f012b2761819e0ab25ff8cf4bac6655cfbc6fcff Maintainer: sobak Status: ready -->
|
||||
<chapter xml:id="faq.passwords" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Bezpieczne haszowanie haseł</title>
|
||||
<titleabbrev>Haszowanie haseł</titleabbrev>
|
||||
|
||||
<simpara>
|
||||
Ta sekcja wyjaśnia powody, dla których należy używać funkcji haszujących
|
||||
(skrótu) do zabezpieczania haseł, a także jak zrobić to efektywnie.
|
||||
</simpara>
|
||||
|
||||
<qandaset>
|
||||
<qandaentry xml:id="faq.passwords.hashing">
|
||||
<question>
|
||||
<simpara>
|
||||
Czemu hasła podawane przez użytkowników powinny być haszowane?
|
||||
</simpara>
|
||||
</question>
|
||||
<answer>
|
||||
<simpara>
|
||||
Haszowanie haseł jest jedną z podstawowych metod zapewniania bezpieczeństwa, która
|
||||
musi być uwzględniona na etapie projektowania aplikacji lub usługi, która przyjmuje hasła
|
||||
od użytkowników. Bez haszowania dowolne przechowywane hasła mogą
|
||||
mogą paść ofiarą kradzieży w wypadku naruszenia źródła danych, a
|
||||
potem natychmiast użyte nie tylko do zaatakowania aplikacji lub usługi, ale także
|
||||
kont użytkowników w innych usługach, jeżeli nie używają oni
|
||||
unikalnych haseł.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Stosując funkcję skrótu do haseł użytkowników przed ich zapisaniem,
|
||||
odgadnięcie oryginalnego hasła przez atakującego staje się niemal niewykonalne,
|
||||
a my wciąż będziemy mogli porównywać wynikowy hasz do oryginalnego hasła.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Należy jednak zauważyć, że haszowanie haseł chroni jedynie przed
|
||||
ich wykradnięciem z miejsca przechowywania danych, ale już nie przed
|
||||
przechwyceniem przez złośliwy kod wstrzyknięty do samej aplikacji
|
||||
lub usługi.
|
||||
</simpara>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
<qandaentry xml:id="faq.passwords.fasthash">
|
||||
<question>
|
||||
<simpara>
|
||||
Dlaczego popularne funkcje haszujące jak <function>md5</function> czy
|
||||
<function>sha1</function> nie nadają się do haszowania haseł?
|
||||
</simpara>
|
||||
</question>
|
||||
<answer>
|
||||
<simpara>
|
||||
Algorytmy haszujące takie jak MD5, SHA1 czy SHA256 zostały zaprojektowane
|
||||
tak, by były bardzo szybkie i wydajne. Przy użyciu nowoczesnych technik i sprzętu,
|
||||
trywialne stały się ataki typu <quote>brute force</quote> na wyniku działania tych funkcji
|
||||
tak, aby odgadnąć oryginalne dane wejściowe.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Ze względu na to, jak szybko dzisiejsze komputery potrafią <quote>odwrócić</quote> te algorytmy
|
||||
haszujące, wielu profesjonalistów z zakresu bezpieczeństwa nie poleca ich
|
||||
stosowania do haszowania haseł.
|
||||
</simpara>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
<qandaentry xml:id="faq.passwords.bestpractice">
|
||||
<question>
|
||||
<simpara>
|
||||
Jak powinny być haszowane hasła, jeśli popularne funkcje skrótu nie
|
||||
nadają się do tego?
|
||||
</simpara>
|
||||
</question>
|
||||
<answer>
|
||||
<simpara>
|
||||
Podczas haszowania haseł dwa najważniejsze aspekty to
|
||||
koszt obliczeniowy oraz sól. Im bardziej kosztowny obliczeniowo
|
||||
jest algorytm haszujący, tym dłużej zajmie aby poddać wynik jego działania
|
||||
atakowi brute force.
|
||||
</simpara>
|
||||
<simpara>
|
||||
PHP udostępnia
|
||||
<link linkend="book.password">wbudowane API do haszowania haseł</link>, które
|
||||
bezpiecznie obsługuje zarówno <link linkend="function.password-hash">haszowanie</link>
|
||||
oraz <link linkend="function.password-verify">weryfikację haseł</link>
|
||||
w poprawny sposób.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Do haszowania haseł sugeruje się użycie algorytmu Blowfish, który
|
||||
jest także domyślnym algorytmem używanym przez API do haszowania haseł, jako że
|
||||
jest on zdecydowanie bardziej kosztowny obliczeniowo niż MD5 lub SHA1, a przy tym
|
||||
wciąż jest skalowalny.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Do haszowania haseł może nadać się także funkcja <function>crypt</function>,
|
||||
ale sugeruje się jej wykorzystanie tylko w celu osiągnięcia kompatybilności
|
||||
z innymi systemami.
|
||||
Zamiast tego zdecydowanie zaleca się użycie
|
||||
<link linkend="book.password">wbudowanego API haszowania haseł</link>,
|
||||
gdy tylko jest to możliwe.
|
||||
</simpara>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
<qandaentry xml:id="faq.passwords.salt">
|
||||
<question>
|
||||
<simpara>
|
||||
Czym jest sól?
|
||||
</simpara>
|
||||
</question>
|
||||
<answer>
|
||||
<simpara>
|
||||
Sól kryptograficzna to dane, które są stosowane podczas procesu haszowania,
|
||||
aby uniemożliwić wyszukanie wyniku działania algorytmu na
|
||||
listach wcześniej obliczonych par haszy i ich danych wejściowych,
|
||||
znanych jako tęczowe tablice.
|
||||
</simpara>
|
||||
<simpara>
|
||||
W prostych słowach, sól to trochę dodatkowych danych, które powodują,
|
||||
że hasze stają się znacznie trudniejsze do złamania. Istnieje wiele
|
||||
usług online, które posiadają rozbudowane listy wcześniej obliczonych haszy
|
||||
oraz oryginalnych danych wejściowych dla tych haszy. użycie soli powoduje,
|
||||
że znalezienie wynikowego hasza na takich listach jest mało prawdopodobne
|
||||
lub wręcz niemożliwe.
|
||||
</simpara>
|
||||
<simpara>
|
||||
<function>password_hash</function> stworzy losową sól, jeśli nie została
|
||||
ona podana. Ogólnie rzecz biorąc jest to najprostsze i najbezpieczniejsze
|
||||
podejście.
|
||||
</simpara>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
<qandaentry xml:id="faq.password.storing-salts">
|
||||
<question>
|
||||
<simpara>
|
||||
Jak przechowywana jest sól?
|
||||
</simpara>
|
||||
</question>
|
||||
<answer>
|
||||
<simpara>
|
||||
Jeśli użyta została funkcja <function>password_hash</function> lub
|
||||
<function>crypt</function>, zwrócona przez nią wartość zawiera także
|
||||
sól jako element wygenerowanego hasza. Ta wartość powinna być zapisana w
|
||||
niezmienionej postaci w bazie danych, gdyż zawiera informacje o tym,
|
||||
jaka funkcja haszująca została wykorzystana do jej stworzenia i można taką
|
||||
wartość przekazać bezpośrednio do <function>password_verify</function> podczas
|
||||
weryfikacji hasła.
|
||||
</simpara>
|
||||
<warning>
|
||||
<simpara>
|
||||
Aby uniknąć ataków opartych o czas do sprawdzenia haseł powinna być
|
||||
zawsze wykorzystywana funkcja <function>password_verify</function>,
|
||||
a nie ponowne obliczenie hasza i porównanie wyników.
|
||||
</simpara>
|
||||
</warning>
|
||||
<simpara>
|
||||
Poniższy diagram pokazuje format wartości zwracanej przez
|
||||
<function>crypt</function> oraz <function>password_hash</function>. Jak
|
||||
widać jest ona samodzielna, zawiera wszystkie informacje
|
||||
na temat algorytmu oraz soli wymaganej do późniejszej weryfikacji hasła.
|
||||
</simpara>
|
||||
<para>
|
||||
<mediaobject>
|
||||
<alt>
|
||||
Elementy wartości zwracanej przez funkcje password_hash oraz crypt to
|
||||
kolejno: wybrany algorytm, opcje algorytmu, wykorzystana sól
|
||||
oraz zahaszowane hasło.
|
||||
</alt>
|
||||
<imageobject>
|
||||
<imagedata fileref="en/faq/figures/crypt-text-rendered.svg" width="690" depth="192" format="SVG" />
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
</qandaset>
|
||||
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:t
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
374
faq/using.xml
Normal file
374
faq/using.xml
Normal file
@@ -0,0 +1,374 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 0a3a57fae02391db80baeba98c9a071dc2760889 Maintainer: sobak Status: ready -->
|
||||
<chapter xml:id="faq.using" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Użycie PHP</title>
|
||||
<titleabbrev>Użycie PHP</titleabbrev>
|
||||
|
||||
<para>
|
||||
Ta sekcja zbiera wiele powszechnych błędów, które możesz napotkać
|
||||
podczas pisania skryptów PHP.
|
||||
</para>
|
||||
|
||||
<qandaset>
|
||||
|
||||
<qandaentry xml:id="faq.using.parameterorder">
|
||||
<!-- TODO: Mention named arguments -->
|
||||
<question>
|
||||
<para>
|
||||
Nie mogę zapamiętać kolejności parametrów funkcji PHP, jest losowa?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
PHP jest klejem, który łączy setki bibliotek zewnętrznych, więc czasami
|
||||
faktycznie powstaje bałagan. Jednak istnieje prosta i pomocna reguła:
|
||||
</para>
|
||||
<para>
|
||||
Parametry w <link linkend="book.array">funkcjach tablic</link> mają kolejność
|
||||
as "<emphasis>needle, haystack</emphasis>" (igła, stóg siana), podczas
|
||||
gdy w <link linkend="book.strings">funkcjach ciągów znaków</link> jest na odwrót,
|
||||
a więc "<emphasis>haystack, needle</emphasis>".
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.anyform">
|
||||
<question>
|
||||
<para>
|
||||
Chciałbym napisać ogólny skrypt PHP, który może obsłużyć dane przychodzące
|
||||
z dowolnego formularza. Skąd mam wiedzieć jakie zmienne metody POST są dostępne?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
PHP oferuje wiele <link linkend="language.variables.predefined">
|
||||
zmiennych predefiniowanych</link>, takich jak superglobalna zmienna <varname>$_POST</varname>.
|
||||
Możesz przejść pętlą po <varname>$_POST</varname>
|
||||
jako że jest to tablica asocjacyjna wszystkich wartości wysłanych tą metodą. Przykładowo,
|
||||
przeiterujmy się po wszystkich z nich używając &foreach;,
|
||||
sprawdzając puste wartości konstrukcją <function>empty</function>
|
||||
i wyświetlmy je.
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$puste = $post = array();
|
||||
foreach ($_POST as $nazwaZmiennej => $wartoscZmiennej) {
|
||||
if (empty($wartoscZmiennej)) {
|
||||
$puste[$nazwaZmiennej] = $wartoscZmiennej;
|
||||
} else {
|
||||
$post[$nazwaZmiennej] = $wartoscZmiennej;
|
||||
}
|
||||
}
|
||||
|
||||
print "<pre>";
|
||||
if (empty($puste)) {
|
||||
print "Żadna z wartości wysłanych przez POST nie jest pusta, wysłano:\n";
|
||||
var_dump($post);
|
||||
} else {
|
||||
print "Mamy " . count($empty) . " pustych wartości\n";
|
||||
print "Wysłano:\n"; var_dump($post);
|
||||
print "Puste:\n"; var_dump($empty);
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.addslashes">
|
||||
<!-- TODO Probably should mention not doing this... -->
|
||||
<question>
|
||||
<para>
|
||||
Muszę przekonwertować wszystkie apostrofy (') do odwrotnego slasha,
|
||||
po którym jest apostrof (\'). Jak mogę to zrobić wyrażeniem
|
||||
regularnym? Chciałbym też zamienić " na \" i
|
||||
\ na \\.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Zakładając, że robisz to na potrzeby bazy danych, skorzystaj z mechanizmu escape'owania
|
||||
dostarczonego razem z bazą danych. Przykładowo użyj
|
||||
<function>mysql_real_escape_string</function> dla MySQL i
|
||||
<function>pg_escape_string</function> dla PostgreSQL. Istnieją
|
||||
też ogólne funkcje <function>addslashes</function> i
|
||||
<function>stripslashes</function>, które były
|
||||
stosowane bardziej powszechnie w starym kodzie PHP.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.wrong-order">
|
||||
<question>
|
||||
<para>
|
||||
Przy takim kodzie wynik jest wyświetlany w złej
|
||||
kolejności:
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
function funkcja($argument)
|
||||
{
|
||||
echo $argument + 10;
|
||||
}
|
||||
$zmienna = 10;
|
||||
echo "funkcja($zmienna) = " . funkcja($zmienna);
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
o co chodzi?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Aby móc użyć wyniku funkcji w wyrażeniu (takim
|
||||
jak konkatenacja z innymi ciągami znaków, musisz zwrócić wartość
|
||||
używając <function>return</function>, a nie
|
||||
wyświetlić ją.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.newlines">
|
||||
<question>
|
||||
<para>
|
||||
Hej, co stało się z moimi przełamaniami linii?
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<pre>
|
||||
<?php echo "To powinna być pierwsza linia."; ?>
|
||||
<?php echo "To powinno się pokazać po pierwszej linii powyżej."; ?>
|
||||
</pre>
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
W PHP zakończeniem bloku kodu jest "?>" albo
|
||||
"?>\n" (gdzie \n oznacza nową linię). Tak więc w przykładzie powyżej,
|
||||
wyświetlone zdania będą w jednej linii, ponieważ PHP pomija
|
||||
nowe linie po zakończeniu bloku. To oznacza, że musisz
|
||||
dodać dodatkową nową linię po każdym bloku kodu PHP, aby
|
||||
wynik wyświetlił się w nowej linii.
|
||||
</para>
|
||||
<para>
|
||||
Dlaczego PHP tak robi? Ponieważ kiedy formatowany jest normalny HTML,
|
||||
to zachowanie zazwyczaj ułatwia życie, gdyż zazwyczaj nie chciałbyś tej nowej linii,
|
||||
ale musiałbyś stworzyć ekstremalnie długie linie kodu PHP lub uczynić
|
||||
wynikowe źródło strony nieczytelnym, aby móc osiągnąć taki efekt.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.headers-sent">
|
||||
<question>
|
||||
<para>
|
||||
Dostaję komunikat 'Warning: Cannot send session cookie - headers already
|
||||
sent...' lub 'Cannot add header information - headers already sent...'.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Funkcje <function>header</function>, <function>setcookie</function>,
|
||||
i <link linkend="ref.session">funkcje
|
||||
sesji</link> muszą dodać nagłówki do strumienia wyjścia, ale nagłówki mogą
|
||||
być wysłane tylko przez jakąkolwiek inną treścią. Skrypt nie może tworzyć żadnego wyjścia
|
||||
przed użyciem tych funkcji, takiego jak kod HTML. Funkcja
|
||||
<function>headers_sent</function> pozwala sprawdzić, czy Twój skrypt wysłał już
|
||||
nagłówki. Możesz też zobaczyć dokumentację <link linkend="ref.outcontrol">funkcji
|
||||
kontroli wyjścia</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.header">
|
||||
<question>
|
||||
<para>
|
||||
Muszę uzyskać bezpośredni dostęp do informacji z nagłówków.
|
||||
Jak mogę to zrobić?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Funkcja <function>getallheaders</function> pozwala to zrobić jeśli
|
||||
uruchamiasz kod PHP jako moduł apache. Tak więc następujący fragment
|
||||
kodu pokaże Ci wszystkie nagłówki żądania:
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$naglowki = getallheaders();
|
||||
foreach ($naglowki as $name => $content) {
|
||||
echo "naglowki[$name] = $content<br />\n";
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
<para>
|
||||
Zobacz też
|
||||
<function>apache_lookup_uri</function>,
|
||||
<function>apache_response_headers</function> oraz
|
||||
<function>fsockopen</function>
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.authentication">
|
||||
<question>
|
||||
<para>
|
||||
Kiedy próbuję użyć autentykacji z IIS, otrzymuję błąd "No Input file specified".
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Winny tutaj jest model bezpieczeństwa IIS. To jest wspólny
|
||||
problem wszystkich programów CGI uruchamianych pod IIS. Obejściem
|
||||
jest stworzenie zwykłego pliku HTML (nie parsowanego przez PHP) jako
|
||||
strony wejściowej do autentykowanego katalogu. Następnie użyj tagu META
|
||||
aby przekierować do strony PHP lub umieść link do strony PHP. PHP rozpozna
|
||||
wtedy poprawnie próbę autentykacji. Nie powinno mieć to wpływu na inne
|
||||
serwery NT. Aby uzyskać więcej informacji, zobacz:
|
||||
<link xlink:href="&url.iis;">&url.iis;</link> oraz sekcję manuala
|
||||
poświęconą <link linkend="features.http-auth">Autentykacji HTTP
|
||||
</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.iis.sharing">
|
||||
<question>
|
||||
<para>
|
||||
Windows: nie mogę uzyskać dostępu do plików udostępnionych na innym komputerze przez IIS
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Musisz zmienić <literal>Go to Internet Information
|
||||
Services</literal>. Znajdź swój plik PHP i przejdź do jego właściwości.
|
||||
Następnie przejdź do karty <literal>File Security</literal>, <literal>Edit -<
|
||||
Anonymous access and authentication control</literal>.
|
||||
</para>
|
||||
<para>
|
||||
Możesz naprawić ten problem odznaczając <literal>Anonymous
|
||||
Access</literal> i pozostawiając <literal>Integrated Window
|
||||
Authentication</literal> zaznaczone lub zaznaczając <literal>Anonymous
|
||||
Access</literal> i zmieniając użytkownika, jako że może nie mieć poprawnego
|
||||
dostępu.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.mixml">
|
||||
<question>
|
||||
<para>
|
||||
W jaki sposób mogę mieszać XML i PHP? Dostaję błąd
|
||||
związany z moimi tagami <?xml!
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Aby osadzić <?xml bezpośrednio w kodzie PHP, będziesz musiał wyłączyć
|
||||
krótkie znaczniki, ustawiając dyrektywę
|
||||
<link linkend="ini.short-open-tag">short_open_tags</link> na
|
||||
<literal>0</literal>. Nie możesz zmienić tej dyrektywy przy użyciu
|
||||
<function>ini_set</function>. Niezależnie od tego czy
|
||||
<link linkend="ini.short-open-tag">short_open_tags</link> jest włączone
|
||||
czy nie, możesz też użyć kodu <literal><?php echo '<?xml'; ?></literal>.
|
||||
Domyślna wartość dla tej dyrektywy to <literal>On</literal>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.variables">
|
||||
<question>
|
||||
<para>
|
||||
Gdzie mogę znaleźć pełną listę zmiennych dostępnych w PHP?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Przeczytaj stronę podręcznika na temat <link linkend="language.variables.predefined">
|
||||
zmiennych predefiniowanych</link>, jako że zawiera ona częściową listę predefiniowanych
|
||||
zmiennych dostępnych dla Twojego skryptu. Pełna lista dostępnych
|
||||
zmiennych (i więcej informacji) może być wyświetlona po wywołaniu
|
||||
funkcji <function>phpinfo</function>. Przeczytaj też sekcję podręcznika o
|
||||
section on <link linkend="language.variables.external">zmiennych
|
||||
spoza PHP</link>, jako że opisuje ona najczęstsze scenariusze związane
|
||||
z zewnętrznymi zmiennymi, taki jak formularze HTML, ciasteczka i adresy URL.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.freepdf">
|
||||
<question>
|
||||
<para>
|
||||
Jak mogę wygenerować pliki PDF bez używania komercyjnych
|
||||
bibliotek używających nie-wolnych licencji, takich jak
|
||||
PDFLib? Szukam czegoś, co jest
|
||||
darmowe i nie wymaga zewnętrznych bibliotek PDF.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Istnieje kilka alternatyw napisanych PHP, takich jak
|
||||
<link xlink:href="&url.pdf.fpdf;">FPDF</link> i
|
||||
<link xlink:href="&url.pdf.tcpdf;">TCPDF</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry xml:id="faq.using.shorthandbytes">
|
||||
<question>
|
||||
<para>
|
||||
Kilka z dyrektyw konfiguracyjnych PHP może przyjąć skrócone wartości bajtów,
|
||||
a nie tylko wartości typu <type>int</type>. Jakie są dostępne skrócone
|
||||
wartości dla bajtów?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Dostępne opcje to K (dla kilobajtów), M (dla megabajtów) i G (dla
|
||||
gigabajtów), a wszystkie z nich mogą być zapisane wielkimi bądź małymi literami.
|
||||
Każda inna wartość jest interpretowana jak bajty. <literal>1M</literal> jest równe jednemu megabajtowi lub
|
||||
<literal>1048576</literal> bajtom. <literal>1K</literal> jest równe jednemu
|
||||
kilobajtowi lub <literal>1024</literal> bajtom. Ta skrócona notacja może
|
||||
być użyta w &php.ini; oraz w funkcji <function>ini_set</function>.
|
||||
Wartości numeryczne są rzutowane na typ <type>int</type>,
|
||||
na przykład <literal>0.5M</literal> jest interpretowane jak <literal>0</literal>.
|
||||
</para>
|
||||
<note>
|
||||
<title>kilobajty a kibibajty</title>
|
||||
<para>
|
||||
Notacja PHP opisuje jeden kilobajt jako odpowiadający 1024 bajtom, podczas gdy
|
||||
standard <acronym>IEC</acronym> definiuje to jako kibibajt.
|
||||
Podsumowując: k oraz K = 1024 bajty.
|
||||
</para>
|
||||
</note>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
</qandaset>
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:t
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
Reference in New Issue
Block a user