cvs: phpdoc-he /features commandline.xml connection-handling.xml file-upload.xml http-auth.xml persistent-connections.xml remote-files.xml safe-mode.xml
[email protected] ("Noam Giladi") Thu, 31 Jul 2003 13:55:26 -0000
| Newsgroups | php.doc.he |
|---|---|
| Message-ID | <cvsnoam1059659726@cvsserver> |
noam Thu Jul 31 09:55:26 2003 EDT
Added files:
/phpdoc-he/features commandline.xml connection-handling.xml
http-auth.xml persistent-connections.xml
Modified files:
/phpdoc-he/features file-upload.xml remote-files.xml safe-mode.xml
Log:
working on features
noam-20030731095526.txt
(text/plain, 98.3 KB)
Index: phpdoc-he/features/file-upload.xml
diff -u phpdoc-he/features/file-upload.xml:1.2 phpdoc-he/features/file-upload.xml:1.3
--- phpdoc-he/features/file-upload.xml:1.2 Sat May 17 15:40:08 2003
+++ phpdoc-he/features/file-upload.xml Thu Jul 31 09:55:26 2003
@@ -1,12 +1,9 @@
<?xml version="1.0" encoding="WINDOWS-1255"?>
-<!-- $Revision: 1.28 $ -->
- <chapter id="features.file-upload">
- <title>èéôåì áäòìàú ÷áöéí</title>
-
- <sect1 id="features.file-upload.post-method">
- <title>POST method uploads</title>
-
- <simpara>
+<chapter id="features.file-upload">
+ <title>èéôåì áäòìàú ÷áöéí</title>
+ <sect1 id="features.file-upload.post-method">
+ <title>POST method uploads</title>
+ <simpara>
PHP éëåìä ìèôì á÷áìú ÷áöéí ùîåòìéí îëì ãôãôï úåàí RFC-1867
(ùëåìì àú netscape navigator 3 åîòìä, microsoft internet explorer 3 òí
úåñó (patch) ùì îé÷øåñåôè, àå âéøñàåú çãùåú éåúø ììà äúåñó).
@@ -14,144 +11,138 @@
òí äàéîåú ùì PHP åôåð÷öéåú äèéôåì á÷áöéí, ðéúðú ùìéèä îìàä òì îé
ùîåøùä ìäòìåú àú ä÷åáõ, åîä ìòùåú òí ä÷åáõ ìàçø ùäåòìä.
</simpara>
- <para>
+ <para>
PHP âí úåîëú áùéèú äòìàú ä÷áöéí PUT ù-netscape composer åä÷ìééðè
- ùì W3C, Amaya, îùúîùéí áä. òåã ôøèéí òì <link
- linkend="features.file-upload.put-method">úîéëä áùéèú PUT</link>.
+ ùì W3C, Amaya, îùúîùéí áä. òåã ôøèéí òì <link linkend="features.file-upload.put-method">úîéëä áùéèú PUT</link>.
</para>
- <para>
+ <para>
îñê äòìàú ÷åáõ éëåì ìäéáðåú òì éãé éöéøú èåôñ îéåçã ùðøàä áòøê ëëä:
<example>
- <title>èåôñ äòìàú ÷åáõ</title>
- <programlisting role="html">
-<![CDATA[
+ <title>èåôñ äòìàú ÷åáõ</title>
+ <programlisting role="html"><![CDATA[
<form enctype="multipart/form-data" action="_URL_" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>
-]]>
- </programlisting>
- </example>
+]]></programlisting>
+ </example>
ä-_URL_ öøéê ìäöáéò òì ÷åáõ PHP. äùãä äçáåé MAX_FILE_SIZE çééá
ìáåà ìôðé ùãä ä÷ìè ùì ä÷åáõ åòøëå äåà âåãì ä÷åáõ äî÷ñéîìé äàôùøé.
äâåãì äåà áéçéãåú îñåí áééè (byte).
<warning>
- <para>
+ <para>
äâãøú ä-MAX_FILE_SIZE äéà áâãø ééòåõ ìãôãôï. ÷ì áéåúø ìäòøéí òì
äî÷ñéîåí äæä. ëãàé ìà ìáðåú òì æä ùäãôãôï îöééú ìîùàìúê! òì äâãøú
ä-PHP òáåø äâåãì äî÷ñéîìé, îöã ùðé, ìà ðéúï ìòáåã.
- The MAX_FILE_SIZE is advisory to the browser. It is easy to
- circumvent this maximum. So don't count on it that the browser
- obeys you wish! The PHP-settings for maximum-size, however,
- cannot be fooled.
+
</para>
- </warning>
- </para>
-
- <para>
+ </warning>
+ </para>
+ <para>
á-PHP, äîùúðéí äáàéí éäéå îåâãøéí áñ÷øéôè äéòã ìàçø äòìàú ÷áöéí ùäöìéçä,
- áäðçä ù<link
- linkend="ini.register-globals">register_globals</link> îåôòì
+ áäðçä ù<link linkend="ini.register-globals">register_globals</link> îåôòì
á-<filename>php.ini</filename>.
- àí <link
- linkend="ini.track-vars">track_vars</link> îåôòì, äí éäéå æîéðéí á-PHP âí
+ àí <link linkend="ini.track-vars">track_vars</link> îåôòì, äí éäéå æîéðéí á-PHP âí
áîòøú äâìåáìé <varname>$HTTP_POST_VARS</varname>. éù ìùéí ìá ùùîåú äîùúðéí
äáàéí îúééçñéí ì÷åáõ ùäåòìä áùãä áùí 'userfile', ëîå áãåâîä ùìîòìä:
<itemizedlist>
- <listitem>
- <simpara>
- <varname>$userfile</varname> - ùí ä÷åáõ äæîðé ùáå àåçñï ä÷åáõ ùäåòìä ìùøú.
+ <listitem>
+ <simpara>
+ <varname>$userfile</varname> - ùí ä÷åáõ äæîðé ùáå àåçñï ä÷åáõ ùäåòìä ìùøú.
</simpara>
- </listitem>
- <listitem>
- <simpara>
- <varname>$userfile_name</varname> - äùí àå äðúéá äî÷åøé ùì ä÷åáõ òì äîçùá ùì æä ùäòìä àú ä÷åáõ
+ </listitem>
+ <listitem>
+ <simpara>
+ <varname>$userfile_name</varname> - äùí àå äðúéá äî÷åøé ùì ä÷åáõ òì äîçùá ùì æä ùäòìä àú ä÷åáõ
</simpara>
- </listitem>
- <listitem>
- <simpara>
- <varname>$userfile_size</varname> - äâåãì ùì ä÷åáõ áéçéãåú ùì áééè (byte)
+ </listitem>
+ <listitem>
+ <simpara>
+ <varname>$userfile_size</varname> - äâåãì ùì ä÷åáõ áéçéãåú ùì áééè (byte)
</simpara>
- </listitem>
- <listitem>
- <simpara>
- <varname>$userfile_type</varname> - ä-mime type ùì ä÷åáõ, áîéãä åäãôãôï ñéô÷ àú äðúåï äæä. ãåâîä: "image/gif".
+ </listitem>
+ <listitem>
+ <simpara>
+ <varname>$userfile_type</varname> - ä-mime type ùì ä÷åáõ, áîéãä åäãôãôï ñéô÷ àú äðúåï äæä. ãåâîä: "image/gif".
</simpara>
- </listitem>
- </itemizedlist>
+ </listitem>
+ </itemizedlist>
éù ìùéí ìá ùäçì÷ "$userfile" áùí äîùúðä äåà äùí ùì ùãä ä÷ìè
ùì ä-TYPE=file áèåôñ äòìàú ä÷åáõ. áèåôñ äòìàú ä÷åáõ ìãåâîä
ùìîòìä, áçøðå ì÷øåà ìîùðä áùí "userfile".
</para>
-
- <para>
+ <para>
á-PHP 4, ääúðäâåú ùåðä áî÷öú, áëê ùäîòøê äâìåáìé <varname>$HTTP_POST_FILES</varname>
ãåàâ ìäëéì îéãò òì ä÷åáõ ùäåòìä. æä æîéï ø÷ àí <link linkend="ini.track-vars">track_vars</link>
îåôòì, àáì <link linkend="ini.track-vars">track_vars</link> úîéã îåôòì
áâéøñàåú PHP ùáàå àçøé 4.0.2.
</para>
-
- <para>
+ <para>
äúëåìä ùì <varname>$HTTP_POST_FILES</varname> îôåøèú ëàï. éù ìùéí ìá
ùäðçú äéñåã äéà ùùí ä÷åáõ ùîåòìä äåà 'userfile', ëîå áãåâîä ìîòìä:
<variablelist>
- <varlistentry>
- <term><varname>$HTTP_POST_FILES['userfile']['name']</varname></term>
- <listitem>
- <para>
+ <varlistentry>
+ <term>
+ <varname>$HTTP_POST_FILES['userfile']['name']</varname>
+ </term>
+ <listitem>
+ <para>
äùí äî÷åøé ùì ä÷åáõ òì îçùá äì÷åç.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><varname>$HTTP_POST_FILES['userfile']['type']</varname></term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <varname>$HTTP_POST_FILES['userfile']['type']</varname>
+ </term>
+ <listitem>
+ <para>
ä-mime type ùì ä÷åáõ, àí äãôãôï ñéô÷ àú äîéãò äæä. ãåâîä: <literal>"image/gif"</literal>.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><varname>$HTTP_POST_FILES['userfile']['size']</varname></term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <varname>$HTTP_POST_FILES['userfile']['size']</varname>
+ </term>
+ <listitem>
+ <para>
äâåãì, áéçéãåú áééè (byte), ùì ä÷åáõ ùäåòìä.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><varname>$HTTP_POST_FILES['userfile']['tmp_name']</varname></term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <varname>$HTTP_POST_FILES['userfile']['tmp_name']</varname>
+ </term>
+ <listitem>
+ <para>
The temporary filename of the file in which the uploaded file
was stored on the server.
ùí ä÷åáõ äæîðé ùáå ðùîø ä÷åáõ òì äùøú.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
-
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ <para>
ëáøéøú îçãì, ä÷áöéí éùîøå áñôøééä äæîðéú ùäéà áøéøú äîçãì ùì äùøú, àìà
- àí äåâãø àçøú á<link
- linkend="ini.upload-tmp-dir">upload_tmp_dir</link> ùðîöàú
+ àí äåâãø àçøú á<link linkend="ini.upload-tmp-dir">upload_tmp_dir</link> ùðîöàú
á<filename>php.ini</filename>. ðéúï ìùðåú àú ñôøééú áøéøú äîçãì ùì äùøú òì éãé
äâãøú îùúðä äñáéáä <envar>TMPDIR</envar> áñáéáä áä PHP øöä.
äâãøä áàîöòåú <function>putenv</function> îúåê ñ÷øéôè ùì PHP ìà úòáåã.
ëîå ëï, îùúðä äñáéáä äæä éëåì ìäéåú ùéîåùé ëùøåöéí ìååãà ùôòåìåú àçøåú
îáåöòåú òì ÷áöéí ùäåòìå.
<example>
- <title>åéãåé äòìàú ÷áöéí</title>
- <para>
+ <title>åéãåé äòìàú ÷áöéí</title>
+ <para>
äãåâîàåú äáàåú äï òáåø âéøñàåú ùì PHP äîàåçøåú î-3.0.16,
åâéøñàåú äîàåçøåú î-PHP áâéøñä 4.0.2. àôùø ìáãå÷ âí àú äôåðöéåú
<function>is_uploaded_file</function> å-<function>move_uploaded_file</function>.
</para>
- <programlisting role="php">
-<![CDATA[
+ <programlisting role="php"><![CDATA[
<?php
if (is_uploaded_file($userfile)) {
copy($userfile, "/place/to/put/uploaded/file");
@@ -161,19 +152,17 @@
/* ...or... */
move_uploaded_file($userfile, "/place/to/put/uploaded/file");
?>
-]]>
- </programlisting>
- <para>
+]]></programlisting>
+ <para>
òáåø âéøñàåú ÷åãîåú ùì PHP, öøéê ìòùåú îùäå ëîå áãåâîä.
<note>
- <para>
+ <para>
æä <emphasis>ìà</emphasis> éòáåã áâéøñàåú ùì PHP ùâãåìåú
î-4.0.2. æä úìåé áúô÷åãéåú äôðéîéú ùì PHP ùùåðúä àçøé äâéøñä äæå.
</para>
- </note>
- </para>
- <programlisting role="php">
-<![CDATA[
+ </note>
+ </para>
+ <programlisting role="php"><![CDATA[
<?php
/* Userland test for uploaded file. */
function is_uploaded_file($filename) {
@@ -191,11 +180,10 @@
echo "Possible file upload attack: filename '$userfile'.";
}
?>
-]]>
- </programlisting>
- </example>
- </para>
- <simpara>
+]]></programlisting>
+ </example>
+ </para>
+ <simpara>
ñ÷øéôè ä-PHP ùî÷áì àú ä÷åáõ äîåòìä öøéê ìééùí ëì ìåâé÷ä äëøçéú
ëãé ì÷áåò îä öøéê ìòùåú òí ä÷åáõ ùäåòìä. ðéúï, ìãåâîä, ìäùúîù
áîùúðä <varname>$file_size</varname> ëãé ìîçå÷ ëì ÷åáõ, ÷èï àå
@@ -204,66 +192,61 @@
àùø úäéä, öøéê ìîçå÷ àú ä÷åáõ îäñôøééä äæîðéú, àå ìäòáéø àåúå
ìî÷åí àçø.
</simpara>
- <simpara>
+ <simpara>
ä÷åáõ éîç÷ îäñôøééä äæîðéú áñåó äá÷ùä àí äåà ìà äåòáø, àå ùùîå ìà ùåðä.
</simpara>
- </sect1>
-
- <sect1 id="features.file-upload.common-pitfalls">
- <title>îìëåãåú ðôåöåú</title>
- <simpara>
+ </sect1>
+ <sect1 id="features.file-upload.common-pitfalls">
+ <title>îìëåãåú ðôåöåú</title>
+ <simpara>
äîàôééï <literal>MAX_FILE_SIZE</literal> ìà éëåì ìäâãéø âåãì ÷åáõ
- äâãåì îâåãì ä÷åáõ ùäåâãø áäâãøú ä-ini - <link
- linkend="ini.upload-max-filesize">upload_max_filesize</link>.
+ äâãåì îâåãì ä÷åáõ ùäåâãø áäâãøú ä-ini - <link linkend="ini.upload-max-filesize">upload_max_filesize</link>.
áøéøú äîçãì äéà 2 îâä-áééè.
</simpara>
- <simpara>
+ <simpara>
ììà åéãåé ä÷áöéí ùîåòìéí ìùøú, îùúîùéí éëåìéí ìçãåø ìîéãò øâéù
áñôøéåú àçøåú.
</simpara>
- <simpara>
+ <simpara>
Please note that the CERN httpd seems to strip off everything
starting at the first whitespace in the content-type mime header
it gets from the client. As long as this is the case, CERN httpd
will not support the file upload feature.
</simpara>
- </sect1>
-
- <sect1 id="features.file-upload.multiple">
- <title>äòìàú ÷áöéí îøåáéí</title>
- <simpara>
+ </sect1>
+ <sect1 id="features.file-upload.multiple">
+ <title>äòìàú ÷áöéí îøåáéí</title>
+ <simpara>
ðéúï ìäòìåú ëîä ÷áöéí áå-æîðéú, åùäîéãò òìéäí éàñó áîòøëéí áùáéìê.
ëãé ìòùåú àú æä, éù ìäùúîù áàåúå úçáéø ùìéçú îòøê áèåôñ ä-HTML ëîå
ùòåùéí òí úéáåú áçéøä åö'÷áå÷ñéí:
</simpara>
- <note>
- <para>
+ <note>
+ <para>
úîéëä áäòìàú ÷áöéí îøåáéí ðåñôä áâéøñä 3.0.10.
</para>
- </note>
- <para>
- <example>
- <title>äòìàú ÷áöéí îøåáéí</title>
- <programlisting role="html">
-<![CDATA[
+ </note>
+ <para>
+ <example>
+ <title>äòìàú ÷áöéí îøåáéí</title>
+ <programlisting role="html"><![CDATA[
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br>
<input name="userfile[]" type="file"><br>
<input name="userfile[]" type="file"><br>
<input type="submit" value="Send files">
</form>
-]]>
- </programlisting>
- </example>
- </para>
- <simpara>
+]]></programlisting>
+ </example>
+ </para>
+ <simpara>
ëùäèåôñ ùìîòìä ðùìç, äîòøëéí <varname>$userfile</varname>,
<varname>$userfile_name</varname> å-<varname>$userfile_size</varname>
éååöøå áúçåí äâìåáìé (îîù ëîå á-$HTTP_POST_FILES
($HTTP_POST_VARS á-PHP 3)). ëì àçã îäð"ì éàðã÷ñ, áöåøä îñôøéú, îòøê
ùì äòøëéí äîúàéîéí, ìôé ä÷áöéí ùðùìçå.
</simpara>
- <simpara>
+ <simpara>
ìãåâîä, áäðçä ùä÷áöéí <filename>/home/test/review.html</filename>
å-<filename>/home/test/xwp.out</filename> ðùìçå. áî÷øä äæä,
<varname>$userfile_name[0]</varname> éëéì àú äòøê
@@ -272,26 +255,24 @@
<varname>$userfile_size[0]</varname> éëéì àú âåãì ä÷åáõ
<filename>review.html</filename> åëéåöà áæä.
</simpara>
- <simpara>
- <varname>$userfile['name'][0]</varname>, <varname>$userfile['tmp_name'][0]</varname>,
+ <simpara>
+ <varname>$userfile['name'][0]</varname>, <varname>$userfile['tmp_name'][0]</varname>,
<varname>$userfile['size'][0]</varname> å-<varname>$userfile['type'][0]</varname>
âí äí ÷áåòéí.
</simpara>
- </sect1>
-
- <sect1 id="features.file-upload.put-method">
- <title>úîéëä áùéèú PUT</title>
-
- <para>
+ </sect1>
+ <sect1 id="features.file-upload.put-method">
+ <title>úîéëä áùéèú PUT</title>
+ <para>
PHP îñô÷ú úîéëä áùéèú HTTP PUT ùáä îùúîùéí netscape composer å-W3C Amaya.
á÷ùú PUT ôùåèåú éåúø îäòìàú ÷áöéí, åäï ðøàåú áòøê ëëä:
<informalexample>
- <programlisting>
+ <programlisting>
PUT /path/filename.html HTTP/1.1
</programlisting>
- </informalexample>
- </para>
- <para>
+ </informalexample>
+ </para>
+ <para>
áãøê ëìì æä éöééï ùäì÷åç øåöä ìùîåø àú äúåëï ùáà àçøé, ëîå:
/path/filename.html áòõ äøùú ùìê. îåáï îàìéå ùæä ìà øòéåï èåá
òáåø Apache àå PHP ìàùø ìëåìí áàåôï àåèåîèé ìëúåá òì ÷áöéí ÷ééîéí
@@ -302,27 +283,27 @@
<Directory>àå àåìé áúåê äáìå÷ <Virtualhost>.
ùåøä ëæå úòùä àú äèøé÷:
<informalexample>
- <programlisting>
+ <programlisting>
Script PUT /put.php
</programlisting>
- </informalexample>
- </para>
- <simpara>
+ </informalexample>
+ </para>
+ <simpara>
æä àåîø ì-Apache ìùìåç àú ëì á÷ùåú PUT ì-URI ùúåàí àú äîé÷åí áå ùîúí
àú äùåøä ùîöééðú àú îé÷åí äñ÷øéôè put.php. æä áäðçä, ëîåáï, ù-PHP îàôùøú
ñéåîåú .php åù-PHP ôòéìä.
</simpara>
- <simpara>
+ <simpara>
áúåê ä÷åáõ put.php öøéê ìëúåá îùäå ëæä:
</simpara>
- <para>
- <informalexample><programlisting role="php">
-<![CDATA[
+ <para>
+ <informalexample>
+ <programlisting role="php"><![CDATA[
<?php copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI); ?>
-]]>
- </programlisting></informalexample>
- </para>
- <simpara>
+]]></programlisting>
+ </informalexample>
+ </para>
+ <simpara>
æä éòúé÷ àú ä÷åáõ ìîé÷åí äîáå÷ù òì éãé äì÷åç. áèç éúòåøø áê äøöåï ìáöò
ëîä áãé÷åú å/àå ìàîú àú äîùúîù ìôðé áéöåò äòú÷ú ä÷åáõ. äèøé÷ äéçéã
ëàï äåà ùëù-PHP øåàä áá÷ùä áùéèú PUT, äéà îàçñðú àú ä÷åáõ ùäåòìä
@@ -335,10 +316,8 @@
äåà ùí ùîâãéø äì÷åç. äì÷åç ùåìç á÷ùä åìà ô÷åãä. ìëï àôùø,
ìãåâîä, ìäòúé÷ àú ëì ä÷áöéí ùäåòìå ìñôøééú äòìàåú îéåçãú.
</simpara>
- </sect1>
-
- </chapter>
-
+ </sect1>
+</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
@@ -358,4 +337,4 @@
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
--->
+-->
Index: phpdoc-he/features/remote-files.xml
diff -u phpdoc-he/features/remote-files.xml:1.3 phpdoc-he/features/remote-files.xml:1.4
--- phpdoc-he/features/remote-files.xml:1.3 Sat May 17 15:40:08 2003
+++ phpdoc-he/features/remote-files.xml Thu Jul 31 09:55:26 2003
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="WINDOWS-1255"?>
-<!-- EN-Revision: 1.13 Maintainer: shlomi Status: ready -->
+<!-- $Revision: 1.4 $ -->
+<!-- EN-Revision: 1.22 Maintainer: shlomi Status: ready -->
<chapter id="features.remote-files">
<title>ùéîåù á÷áöéí îøåç÷éí</title>
Index: phpdoc-he/features/safe-mode.xml
diff -u phpdoc-he/features/safe-mode.xml:1.6 phpdoc-he/features/safe-mode.xml:1.7
--- phpdoc-he/features/safe-mode.xml:1.6 Sat May 17 15:40:08 2003
+++ phpdoc-he/features/safe-mode.xml Thu Jul 31 09:55:26 2003
@@ -1,105 +1,114 @@
<?xml version="1.0" encoding="WINDOWS-1255"?>
-<!-- EN-Revision: 1.25 Maintainer: dorons Status: ready -->
-
- <chapter id="features.safe-mode">
- <title>safe-mode - îöá áèåç</title>
-
- <para>
+<!-- $Revision: 1.7 $ -->
+<!-- EN-Revision: 1.42 Maintainer: dorons Status: ready -->
+<chapter id="features.safe-mode">
+ <title>safe-mode - îöá áèåç</title>
+ <para>
äsafe-mode ùì PHP äåà ðñéåï ìôúåø àú áòééú äàáèçä ùì ùøúéí-îùåúôéí.
æä ìà ðëåï îáçéðä àøëéè÷èåøéú ìôúåø àú äáòééä äæàú áøîú ä-PHP, àáì
îëéååï ùäàìèøðèéáåú áùøúéí åîòøëåú-äôòìä äï ìà îàåã øéàìéñèéåú,
àðùéí øáéí, áîéåçã ñô÷é-ùéøåú àéðèøðè, îùúîùéí ásafe-mode ëøâò.
</para>
- <para>
- <table>
- <title>äåøàåú ÷åðôéâåøöéä ìùìéèä ásafe-mode äï:</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>äåøàä</entry>
- <entry>òøê áøéøú-îçãì</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <link linkend="ini.safe-mode">safe_mode</link>
- </entry>
- <entry><literal>Off</literal></entry>
- </row>
- <row>
- <entry>
- <link linkend="ini.safe-mode-gid">safe_mode_gid</link>
- </entry>
- <entry><literal>0</literal></entry>
- </row>
- <row>
- <entry>
- <link linkend="ini.safe-mode-include-dir">safe_mode_include_dir</link>
- </entry>
- <entry><literal>""</literal></entry>
- </row>
- <row>
- <entry>
- <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>
- </entry>
- <entry><literal>1</literal></entry>
- </row>
- <row>
- <entry>
- <link linkend="ini.open-basedir">open_basedir</link>
- </entry>
- <entry><literal>""</literal></entry>
- </row>
- <row>
- <entry>
- <literal>safe_mode_allowed_env_vars</literal>
- </entry>
- <entry><literal>PHP_</literal></entry>
- </row>
- <row>
- <entry>
- <literal>safe_mode_protected_env_vars</literal>
- </entry>
- <entry><literal>LD_LIBRARY_PATH</literal></entry>
- </row>
- <row>
- <entry>
- <literal>disable_functions</literal>
- </entry>
- <entry><literal>""</literal></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
- <para>
+ <para>
+ <table>
+ <title>äåøàåú ÷åðôéâåøöéä ìùìéèä ásafe-mode äï:</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>äåøàä</entry>
+ <entry>òøê áøéøú-îçãì</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <link linkend="ini.safe-mode">safe_mode</link>
+ </entry>
+ <entry>
+ <literal>Off</literal>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <link linkend="ini.safe-mode-gid">safe_mode_gid</link>
+ </entry>
+ <entry>
+ <literal>0</literal>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <link linkend="ini.safe-mode-include-dir">safe_mode_include_dir</link>
+ </entry>
+ <entry>
+ <literal>""</literal>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>
+ </entry>
+ <entry>
+ <literal>1</literal>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <link linkend="ini.open-basedir">open_basedir</link>
+ </entry>
+ <entry>
+ <literal>""</literal>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>safe_mode_allowed_env_vars</literal>
+ </entry>
+ <entry>
+ <literal>PHP_</literal>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>safe_mode_protected_env_vars</literal>
+ </entry>
+ <entry>
+ <literal>LD_LIBRARY_PATH</literal>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>disable_functions</literal>
+ </entry>
+ <entry>
+ <literal>""</literal>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ <para>
ëàùø <link linkend="ini.safe-mode">safe_mode</link> îåôòì, PHP áåã÷ú
àí áòì ä÷åáõ ùì äñ÷øéôè äðåëçé äåà âí äáòìéí ùì ä÷åáõ ùôåð÷öééú ÷áöéí
úùúîù áå. ìãåâîà:
- <programlisting role="ls">
-<![CDATA[
+ <programlisting role="ls"><![CDATA[
-rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php
-rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd
-]]>
- </programlisting>
+]]></programlisting>
äôòìú ä÷åáõ äáà
- <programlisting role="php">
-<![CDATA[
+ <programlisting role="php"><![CDATA[
<?php
readfile('/etc/passwd');
?>
-]]>
- </programlisting>
+]]></programlisting>
âåøîú ìùâéàä äæàú ëùsafe-mode ôåòì:
- <screen>
-<![CDATA[
+ <screen><![CDATA[
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2
-]]>
- </screen>
- </para>
- <para>
+]]></screen>
+ </para>
+ <para>
ìîøåú æàú, éùðï ñáéáåú ùáäï áãé÷ú <literal>UID</literal> îçîéøä ìà îúàéîä
åáãé÷ú <literal>GID</literal> î÷ìä îñôé÷ä. äàôùøåú äæàú ðúîëú áàîöòåú îúâ
ä-<link linkend="ini.safe-mode-gid">safe_mode_gid</link>. ÷áéòúå ì-
@@ -107,258 +116,309 @@
÷áéòúå ì-<literal>Off</literal> (áøéøú-äîçãì) îáöòú áãé÷ú
<literal>UID</literal>.
</para>
- <para>
+ <para>
àí áî÷åí <link linkend="ini.safe-mode">safe_mode</link>, ð÷áòú ñôøééú
<link linkend="ini.open-basedir">open_basedir</link> àæ ëì ôòåìåú ä÷áöéí
éäéå îåâáìåú ì÷áöéí úçú äñôøééä ä÷áåòä, ìãåâîà (Apache httpd.conf):
- <programlisting role="ini">
-<![CDATA[
+ <programlisting role="ini"><![CDATA[
<Directory /docroot>
php_admin_value open_basedir /docroot
</Directory>
-]]>
- </programlisting>
+]]></programlisting>
àí àåúå ÷åáõ îåøõ òí ÷áéòú ä-
<link linkend="ini.open-basedir">open_basedir</link> àæ æàú äúåöàä:
- <screen>
-<![CDATA[
+ <screen><![CDATA[
Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2
-]]>
- </screen>
- </para>
- <para>
+]]></screen>
+ </para>
+ <para>
àôùø âí ìáèì ôåð÷öéåú ôåð÷öéåú éçéãåú, àê ìà ðéúï ìäùúîù áäåøàä
disable_functions îçåõ ì÷åáõ &php.ini;, îä ùàåîø ùàé-àôùø ìáèì ôåð÷öéåú
ø÷ ìvirtual-hosts àå ñôøéåú áåããåú á÷åáõ httpd.conf.
àí îåñéôéí àú æä ì÷åáõ &php.ini;:
- <programlisting role="ini">
-<![CDATA[
+ <programlisting role="ini"><![CDATA[
disable_functions readfile,system
-]]>
- </programlisting>
+]]></programlisting>
î÷áìéí àú äôìè:
- <screen>
-<![CDATA[
+ <screen><![CDATA[
Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2
-]]>
- </screen>
- </para>
-
- <sect1 id="features.safe-mode.functions">
- <title>ôåð÷öéåú äîåâáìåú/îáåèìåú ásafe-mode</title>
- <para>
+]]></screen>
+ </para>
+ <sect1 id="features.safe-mode.functions">
+ <title>ôåð÷öéåú äîåâáìåú/îáåèìåú ásafe-mode</title>
+ <para>
æä ëðøàä øéùåí ìà ùìí åàåìé ìà ðëåï ùì äôåð÷öéåú äîåâáìåú á-
<link linkend="features.safe-mode">safe mode</link>.
<!-- TODO: add ¬e.sm.*; to the functions mentioned here.
That entity should link to this section -->
- <table>
- <title>ôåð÷öéåú äîåâáìåú ásafe-mode</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>ôåð÷öéä</entry>
- <entry>äâáìåú</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><function>dbmopen</function></entry>
- <entry>&sm.uidcheck;</entry>
- </row>
- <row>
- <entry><function>dbase_open</function></entry>
- <entry>&sm.uidcheck;</entry>
- </row>
- <row>
- <entry><function>filepro</function></entry>
- <entry>&sm.uidcheck;</entry>
- </row>
- <row>
- <entry><function>filepro_rowcount</function></entry>
- <entry>&sm.uidcheck;</entry>
- </row>
- <row>
- <entry><function>filepro_retrieve</function></entry>
- <entry>&sm.uidcheck;</entry>
- </row>
- <row>
- <entry><function>ifx_*</function></entry>
- <entry>äâáìåú sql_safe_mode, (!= safe-mode)</entry>
- <!-- TODO: more info on sql-safe-mode -->
- </row>
- <row>
- <entry><function>ingres_*</function></entry>
- <entry>äâáìåú sql_safe_mode, (!= safe-mode)</entry>
- <!-- TODO: more info on sql-safe-mode -->
- </row>
- <row>
- <entry><function>mysql_*</function></entry>
- <entry>äâáìåú sql_safe_mode, (!= safe-mode)</entry>
- <!-- TODO: more info on sql-safe-mode -->
- </row>
- <row>
- <entry><function>pg_loimport</function></entry>
- <entry>&sm.uidcheck;</entry>
- <!-- source TODO: there is no PHP-warning for that safe-mode-restriction -->
- </row>
- <row>
- <entry><function>posix_mkfifo</function></entry>
- <entry>&sm.uidcheck.dir;</entry>
- </row>
- <row>
- <entry><function>putenv</function></entry>
- <entry>îîìà àú äåøàåú ä-ini safe_mode_protected_env_vars å-
+ <table>
+ <title>ôåð÷öéåú äîåâáìåú ásafe-mode</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>ôåð÷öéä</entry>
+ <entry>äâáìåú</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <function>dbmopen</function>
+ </entry>
+ <entry>&sm.uidcheck;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>dbase_open</function>
+ </entry>
+ <entry>&sm.uidcheck;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>filepro</function>
+ </entry>
+ <entry>&sm.uidcheck;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>filepro_rowcount</function>
+ </entry>
+ <entry>&sm.uidcheck;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>filepro_retrieve</function>
+ </entry>
+ <entry>&sm.uidcheck;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>ifx_*</function>
+ </entry>
+ <entry>äâáìåú sql_safe_mode, (!= safe-mode)</entry>
+ <!-- TODO: more info on sql-safe-mode -->
+ </row>
+ <row>
+ <entry>
+ <function>ingres_*</function>
+ </entry>
+ <entry>äâáìåú sql_safe_mode, (!= safe-mode)</entry>
+ <!-- TODO: more info on sql-safe-mode -->
+ </row>
+ <row>
+ <entry>
+ <function>mysql_*</function>
+ </entry>
+ <entry>äâáìåú sql_safe_mode, (!= safe-mode)</entry>
+ <!-- TODO: more info on sql-safe-mode -->
+ </row>
+ <row>
+ <entry>
+ <function>pg_loimport</function>
+ </entry>
+ <entry>&sm.uidcheck;</entry>
+ <!-- source TODO: there is no PHP-warning for that safe-mode-restriction -->
+ </row>
+ <row>
+ <entry>
+ <function>posix_mkfifo</function>
+ </entry>
+ <entry>&sm.uidcheck.dir;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>putenv</function>
+ </entry>
+ <entry>îîìà àú äåøàåú ä-ini safe_mode_protected_env_vars å-
safe_mode_allowed_env_vars. úéòåã îìà á-
- <function>putenv</function></entry>
- <!-- TODO: document those directives in chapters/config.xml -->
- </row>
- <row>
- <entry><function>move_uploaded_file</function></entry>
- <entry>&sm.uidcheck; <!-- TODO: check this --></entry>
- </row>
-
- <!-- TODO: from here on, add warning to the function itself -->
-
- <row>
- <entry><function>chdir</function></entry>
- <entry>&sm.uidcheck.dir;</entry>
- </row>
- <row>
- <entry><function>dl</function></entry>
- <entry>&sm.disabled;</entry>
- </row>
- <row>
- <entry><link linkend="language.operators.execution">backtick operator</link></entry>
- <entry>&sm.disabled;</entry>
- </row>
- <row>
- <entry><function>shell_exec</function> (ôåð÷öéä æää ìbacktick operator)</entry>
- <entry>&sm.disabled;</entry>
- </row>
- <row>
- <entry><function>exec</function></entry>
- <entry>ðéúï ìäôòéì ÷áöéí ø÷ áúåê <link
- linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>.
+ <function>putenv</function>
+ </entry>
+ <!-- TODO: document those directives in chapters/config.xml -->
+ </row>
+ <row>
+ <entry>
+ <function>move_uploaded_file</function>
+ </entry>
+ <entry>&sm.uidcheck; <!-- TODO: check this -->
+ </entry>
+ </row>
+ <!-- TODO: from here on, add warning to the function itself -->
+ <row>
+ <entry>
+ <function>chdir</function>
+ </entry>
+ <entry>&sm.uidcheck.dir;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>dl</function>
+ </entry>
+ <entry>&sm.disabled;</entry>
+ </row>
+ <row>
+ <entry>
+ <link linkend="language.operators.execution">backtick operator</link>
+ </entry>
+ <entry>&sm.disabled;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>shell_exec</function> (ôåð÷öéä æää ìbacktick operator)</entry>
+ <entry>&sm.disabled;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>exec</function>
+ </entry>
+ <entry>ðéúï ìäôòéì ÷áöéí ø÷ áúåê <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>.
îñéáåú îòùéåú ìà ðéúï ëøâò ìäëéì <literal>..</literal>
áðúéá (Path) ääôòìä.</entry>
- </row>
- <row>
- <entry><function>system</function></entry>
- <entry>ðéúï ìäøéõ ÷áöéí ø÷ áúåê <link
- linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>.
+ </row>
+ <row>
+ <entry>
+ <function>system</function>
+ </entry>
+ <entry>ðéúï ìäøéõ ÷áöéí ø÷ áúåê <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>.
îñéáåú îòùéåú ìà ðéúï ëøâò ìäëéì <literal>..</literal>
áðúéá (Path) ääôòìä.</entry>
- </row>
- <row>
- <entry><function>passthru</function></entry>
- <entry>ðéúï ìäøéõ ÷áöéí ø÷ áúåê <link
- linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>.
+ </row>
+ <row>
+ <entry>
+ <function>passthru</function>
+ </entry>
+ <entry>ðéúï ìäøéõ ÷áöéí ø÷ áúåê <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>.
îñéáåú îòùéåú ìà ðéúï ëøâò ìäëéì <literal>..</literal>
áðúéá (Path) ääôòìä.</entry>
- </row>
- <row>
- <entry><function>popen</function></entry>
- <entry>ðéúï ìäøéõ ÷áöéí ø÷ áúåê <link
- linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>.
+ </row>
+ <row>
+ <entry>
+ <function>popen</function>
+ </entry>
+ <entry>ðéúï ìäøéõ ÷áöéí ø÷ áúåê <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>.
îñéáåú îòùéåú ìà ðéúï ëøâò ìäëéì <literal>..</literal>
áðúéá (Path) ääôòìä.</entry>
- <!-- TODO: not sure. popen uses a completely different implementation
+ <!-- TODO: not sure. popen uses a completely different implementation
Don't know why, don't know whether it's behaving the same -->
- </row>
- <row>
- <entry><function>mkdir</function></entry>
- <entry>&sm.uidcheck.dir;</entry>
- </row>
- <row>
- <entry><function>rmdir</function></entry>
- <entry>&sm.uidcheck;</entry>
- </row>
- <row>
- <entry><function>rename</function></entry>
- <entry>&sm.uidcheck; &sm.uidcheck.dir;<!-- on the old name only, it seems. Is rename preventing moving files? --></entry>
- </row>
- <row>
- <entry><function>unlink</function></entry>
- <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry>
- </row>
- <row>
- <entry><function>copy</function></entry>
- <entry>&sm.uidcheck; &sm.uidcheck.dir; (á-
+ </row>
+ <row>
+ <entry>
+ <function>mkdir</function>
+ </entry>
+ <entry>&sm.uidcheck.dir;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>rmdir</function>
+ </entry>
+ <entry>&sm.uidcheck;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>rename</function>
+ </entry>
+ <entry>&sm.uidcheck; &sm.uidcheck.dir;<!-- on the old name only, it seems. Is rename preventing moving files? -->
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <function>unlink</function>
+ </entry>
+ <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>copy</function>
+ </entry>
+ <entry>&sm.uidcheck; &sm.uidcheck.dir; (á-
<parameter>source</parameter> å-
<parameter>target</parameter>) </entry>
- </row>
- <row>
- <entry><function>chgrp</function></entry>
- <entry>&sm.uidcheck;</entry>
- </row>
- <row>
- <entry><function>chown</function></entry>
- <entry>&sm.uidcheck;</entry>
- </row>
- <row>
- <entry><function>chmod</function></entry>
- <entry>&sm.uidcheck; áðåñó, ìà ðéúï ì÷áåò
+ </row>
+ <row>
+ <entry>
+ <function>chgrp</function>
+ </entry>
+ <entry>&sm.uidcheck;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>chown</function>
+ </entry>
+ <entry>&sm.uidcheck;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>chmod</function>
+ </entry>
+ <entry>&sm.uidcheck; áðåñó, ìà ðéúï ì÷áåò
àú SUID, SGID åáéèéí ãáé÷éí (Sticky bits)</entry>
- </row>
- <row>
- <entry><function>touch</function></entry>
- <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry>
- </row>
- <row>
- <entry><function>symlink</function></entry>
- <entry>&sm.uidcheck; &sm.uidcheck.dir; (ø÷ äîèøä ðáã÷ú)</entry>
- </row>
- <row>
- <entry><function>link</function></entry>
- <entry>&sm.uidcheck; &sm.uidcheck.dir; (ø÷ äîèøä ðáã÷ú)</entry>
- </row>
- <row>
- <entry><function>getallheaders</function></entry>
- <entry>ásafe-mode, ëåúøåú-òìéåðåú (Headers) ùîúçéìåú á-'authorization'
+ </row>
+ <row>
+ <entry>
+ <function>touch</function>
+ </entry>
+ <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry>
+ </row>
+ <row>
+ <entry>
+ <function>symlink</function>
+ </entry>
+ <entry>&sm.uidcheck; &sm.uidcheck.dir; (ø÷ äîèøä ðáã÷ú)</entry>
+ </row>
+ <row>
+ <entry>
+ <function>link</function>
+ </entry>
+ <entry>&sm.uidcheck; &sm.uidcheck.dir; (ø÷ äîèøä ðáã÷ú)</entry>
+ </row>
+ <row>
+ <entry>
+ <function>getallheaders</function>
+ </entry>
+ <entry>ásafe-mode, ëåúøåú-òìéåðåú (Headers) ùîúçéìåú á-'authorization'
(ìà îåùôò éçñä, case insensitive)
ìà éåçæøå. àæäøä: æä ìà ú÷éï áâéøñú ùøú-aol ùì
<function>getallheaders</function>!</entry>
- </row>
- <row>
- <entry><function>header</function></entry>
- <entry>ásafe-mode, äîñôø äñéãåøé ùì äñ÷øéôè îúååñó ìçì÷ ä-
+ </row>
+ <row>
+ <entry>
+ <function>header</function>
+ </entry>
+ <entry>ásafe-mode, äîñôø äñéãåøé ùì äñ÷øéôè îúååñó ìçì÷ ä-
<literal>realm</literal> áëåúøú äòìéåðä
<literal>WWW-Authenticate</literal> àí äëåúøú äæàú ð÷áòú
(îùîù ìàéîåú HTTP).</entry>
- </row>
- <row>
- <entry>
- <function>highlight_file</function>,
+ </row>
+ <row>
+ <entry>
+ <function>highlight_file</function>,
<function>show_source</function>
- </entry>
- <entry>
+ </entry>
+ <entry>
&sm.uidcheck; &sm.uidcheck.dir; (îåùôò ø÷ îàæ PHP 4.2.1)
</entry>
- </row>
- <row>
- <entry>
- <function>parse_ini_file</function>
- </entry>
- <entry>
+ </row>
+ <row>
+ <entry>
+ <function>parse_ini_file</function>
+ </entry>
+ <entry>
&sm.uidcheck; &sm.uidcheck.dir; (îåùôò ø÷ îàæ PHP 4.2.1)
</entry>
- </row>
- <row>
- <entry>ëì ôåð÷öéä ùîùúîùú á-
+ </row>
+ <row>
+ <entry>ëì ôåð÷öéä ùîùúîùú á-
<filename>php4/main/fopen_wrappers.c</filename>
- </entry>
- <entry>??</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
- </sect1>
-
- </chapter>
-
+ </entry>
+ <entry>??</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ </sect1>
+</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Index: phpdoc-he/features/commandline.xml
+++ phpdoc-he/features/commandline.xml
<?xml version="1.0" encoding="WINDOW-1255"?>
<!-- $Revision: 1.1 $ -->
<!--EN-Revision: 1.23 Maintainer: noam Status: working -->
<chapter id="features.commandline">
<title>ùéîåù á PHP îùåøú äô÷åãä</title>
<!-- NEW DOCUMENTATION STARTS -->
<para>äçì îâéøñä 4.3.0
<literal>PHP</literal>úåîëú á <literal>SAPI</literal> type (Server Application Programming Interface), çãù ùð÷øà
<literal>CLI</literal> ùôøåùå <emphasis>Command Line
Interface</emphasis>ëîå ùäùí îøîæ äîèøä äòé÷øéú ùì ä-<literal>SAPI</literal> type
, äåà ôéúåç àôìé÷öéåú ùì ä- shell (åùåìçï äòáåãä áðåñó) , áòæøú
<literal>PHP</literal>. éù ãé äøáä äáãìéí áéï <literal>CLI SAPI</literal>å<literal>SAPI</literal> àçøéí , ùéåñáøå áäîùê. ùååä ìäæëéø ù <literal>CLI</literal>å <literal>CGI</literal> ùåðéí, ìîøåú ùäí çåì÷éí äøáä äúðäâåéåú ãåîåú.
</para>
<para>
<literal>CLI SAPI</literal>äåöâ ìøàùåðä á <literal>PHP 4.2.0</literal>, àáì ø÷ áâéøñú ðéñåé, åëãé ìäùúîù áå äéä öøéê ìàôùø àåúå áôøåù áòæøú <literal>--enable-cli</literal> áîäìê äøéöä. äçì î<literal>PHP 4.3.0</literal>
<literal>CLI SAPI</literal>äàåôöéä <literal>--enable-cli</literal>äéà áøéøú îçãì, åìà àåôöéåðàìéú. òãééï àôùø ìðèøì àú äééùåí ò"é ùéîåù á <literal>--disable-cli</literal>. </para>
<para>÷éåí ää÷áöéí äáéðàøééí ùì CLI/CGI îé÷åîí åùîí, úìåé áöåøä ùáä PHP äåú÷ðä . áøéøú äîçãì äéà ùëàùø îøéöéí àú äô÷åãä <literal>make</literal>, âí CGI åâí CLI îîå÷îéí á <literal>sapi/cgi/php</literal>å<literal>sapi/cli/php</literal> áäúàîä, áú÷ééú ÷åã äî÷åø ùì PHP. àôùø ìøàåú ùùðéäí ð÷øàéí<literal>php</literal>. îä ù÷åøä áîùê äáéöåò ùì What happens during <literal>make
install</literal>úìåé áùåøú ä÷åðôéâåøöéä ùìê . àí îåãåì SAPI ñôöéôé ðáçø áîùê ä÷åðôéâåøöéä, , apxs ìîùì, àå ùäúëåðä<literal> --disable-cgi</literal>áùéîåù, CLI éåòú÷ ì <literal>{PREFIX}/bin/php</literal>áúäìéê ä<literal>make install</literal>àçøú ä CGI îåðç ùí. ìãåâîà: àí ðëúåá áùåøú äô÷åãä , <literal>--with--apxs
</literal> , àæ ä CLI éåòú÷ ì <literal>{PREFIX}/bin/php</literal>áîäìê<literal>make
install</literal>.àí àúä øåöä ìøîåñ àú ääú÷ðä ùì ä CGI äùúîù á
binary, use <literal>make install-cli</literal>àçøé <literal>make
install</literal>àå ùàúä éëåì ìöééï <literal>--disable-cgi
</literal>áùåøú ä÷åðôéâåøöéä</para>
<para>
<note>
<para>áâìì ùùúé äô÷åãåú<literal>--enable-cli</literal>å<literal>
--enable-cgi</literal>îàåôùøåú ëáøøú îçãì, ìëúåá ôùåè <literal>--enable-cli</literal> áùåøú ä÷åðôéâåøöéä , ìà îçééáú áäëøç , ù CLI éåòú÷ ì <literal>
{PREFIX}/bin/php</literal>áîäìê ä<literal>make install</literal>.
</para>
</note>
</para>
<para>çáéìú ääôöä ì windows , áâøñàåú áéï PHP 4.2.0 å PHP 4.2.3 äôéöä àú CLI áöåøú
<filename>php-cli.exe</filename>, áàåúä úé÷ééä ëîå CGI
<filename>php.exe</filename>. äçì îâéøñä PHP 4.3.0, çáéìú ääôöä ì windows îôéöä àú CLI ë÷åáõ <filename>php.exe</filename>áú÷éä ðôøãú áùí<literal>cli</literal>, ëê ù<literal>cli/php.exe</literal>.
</para>
<para>
<note>
<title>àéæä SAPI éù ìé?</title>
<para> á shell, ä÷ìãú<literal>php -v</literal> ðåúðú àú äúåöàä , àí<literal>php</literal> äéà CGI àå CLI. øàä âí àú äôåð÷öéä <function>php_sapi_name</function>åä÷áåò<constant>
PHP_SAPI</constant>.
</para>
</note>
</para>
<para>
<note>
<para>áéåðé÷ñ ðåñó îãøéê äçì î PHP 4.3.2. , ìëï äô÷åãä <literal>man php</literal>úúï àú äúåöàä äîáå÷ùú.</para>
</note>
</para>
<para>äáãìéí îùîòåúééí áéï <literal>CLI SAPI</literal>åñåâéí àçøéí ùì <literal>SAPI</literal>.<itemizedlist>
<listitem>
<para>áðéâåã ì<literal>CGI SAPI</literal>, ùåí ëåúøåú , headers, ìà ðëúáåú ìôìè.
</para>
<para>ìîøåú ù <literal>CGI SAPI</literal> îàôùø ìðèøì àú ä HTTP
headers, àéï ùåí àåôöéä î÷áéìä, ìàôùø àåúí á<literal>CLI
SAPI</literal>.
</para>
<para>
CLI îåúçìú áîöá ù÷è áúåø áøéøú îçãì , ìîøåú ùàôùøåú, <literal>-q</literal>
ðùîøú áùáéì äúàîä ì CGI scripts òúé÷éí.
</para>
<para>
Plain text error messages (no HTML formatting).
</para>
</listitem>
<listitem>
<para>
éù ëîä äðçéåú &php.ini; îñåéîåú ùðãøñåú ò"é <literal>CLI
SAPI</literal>áâìì ùàéï áäí ùåí äâéåï áñáéáú ä shell :
</para>
<para>
<table>
<title>øîéñú äðçéåú ùì &php.ini;</title>
<tgroup cols="3">
<thead>
<row>
<entry>äâãøä</entry>
<entry>
<literal>CLI SAPI</literal>òøê áøéøú îçãì</entry>
<entry>äòøä</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<link linkend="ini.html-errors">html_errors</link>
</entry>
<entry>&false;</entry>
<entry>òìåì ìäéåú ãé îñåáê ì÷øåà àú äåøàåú äùâéàä, îúåê îòèôú ääôòìä, ëùäí òèåôåú áëì àåúí úâé <literal>HTML</literal>
, ìëï ääâãøä äæàú úùåðä ì &false;.
</entry>
</row>
<row>
<entry>
<link linkend="ini.implicit-flush">implicit_flush</link>
</entry>
<entry>&true;</entry>
<entry>äîèøä äéà ùëì ôìèå ùîâéò îäôåð÷öéåú : <function>print</function>, <function>echo</function> åùàø ôåð÷öéåú äôìè, éåöâ òì äîñê áàåôï îééãé, åìà éú÷ò áàéæä áôø. àúä òãééï éëåì ìäùúîù áäâãøä, <link linkend="ref.outcontrol">output buffering</link> àí àúä îòåðééï ìòùåú îðéôåìöéåú òì äôìè äñèðãøèé.</entry>
</row>
<row>
<entry>
<link linkend="ini.max-execution-time">max_execution_time</link>
</entry>
<entry>0 (unlimited)</entry>
<entry>úåëðéåú ùðëúáå ìùéîåù áøùú àîåøåú ìäúáöò áæîï ÷öø, áðéâåã úëåðéåú ùðëúáå ìîòèôú ääôòìä, åìëï äæîï äî÷ñéîìé ìøéöä ùåðä ì-ììà äâáìä.
</entry>
</row>
<row>
<entry>
<link linkend="ini.register-argc-argv">register_argc_argv</link>
</entry>
<entry>&true;</entry>
<entry>
<para>
áæëåú ä÷áéòä ùì ääâãøä äæàú ìàîú, úîéã úäéä âéùä ìîùúðéí, <emphasis>argc</emphasis> (number of arguments passed to the
application) å <emphasis>argv</emphasis> (array of the actual
arguments) á <literal>CLI SAPI</literal>.
</para>
<para>
äçì î PHP 4.3.0, äîùúðéí <varname>$argc</varname>å<varname>$argv</varname>î÷áìéí àú äòøëéí äðëåðéí ìäí .áâéøñàåú ÷åãîåú äéååöøåú äîùúðéí äàìä àøòä ëîå á <literal>CGI</literal>å<literal>MODULE</literal> , ùãøùä àú ùääâãøåú ùì PHP <link linkend="ini.register-globals">register_globals</link>éåôòìå. áìé ÷ùø úîéã àôùø ìâùú ì <link linkend="reserved.variables.server">$_SERVER</link>àå<varname>$HTTP_SERVER_VARS</varname>ìãåâîà:<varname>$_SERVER['argv']</varname>
</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<note>
<para>ìà ðéúï ìàúçì àú ääâãøåú äàìä î÷åáõ &php.ini;
àáì àôùø ìùðåú àú äòøëéí ùì ääâãøåú áæîï äøéöä ìîùì:<link linkend="ini.register-argc-argv">register_argc_argv</link>.
</para>
</note>
</listitem>
<listitem>
<para>òì îðú ìä÷ì òì äòáåãä áîñâøú äîòèôú , äåâãøå ëîä ÷áåòéí :<table>
<title>CLI specific Constants</title>
<tgroup cols="2">
<thead>
<row>
<entry>÷áåò</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<constant>STDIN</constant>
</entry>
<entry> stream îåëï ì <literal>stdin</literal>,ùçåñê æîï ìôúåç àåúå áöåøä äáàä, <programlisting role="php"><![CDATA[
$stdin = fopen('php://stdin', 'r');
]]></programlisting>
</entry>
</row>
<row>
<entry>
<constant>STDOUT</constant>
</entry>
<entry> stream îåëï ì <literal>stdout</literal>,ùçåñê æîï ìôúåç àåúå áöåøä äáàä, <programlisting role="php"><![CDATA[
$stdout = fopen('php://stdout', 'w');
]]></programlisting>
</entry>
</row>
<row>
<entry>
<constant>STDERR</constant>
</entry>
<entry> stream îåëï ì <literal>stderr</literal>,ùçåñê æîï ìôúåç àåúå áöåøä äáàä, <programlisting role="php"><![CDATA[
$stderr = fopen('php://stderr', 'w');
]]></programlisting>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>ìëï àí áøöåðê ìôúåç stream , ì
Given the above, you don't need to open e.g. a stream for
<literal>stderr</literal> , ìãåâîà, ôùåè äùúîù á÷áåò ùëáø ÷ééí ëê:
<programlisting role="php"><![CDATA[
php -r 'fwrite(STDERR, "stderr\n");'
]]></programlisting>àéï öåøê ìñâåø àú ä÷ùøéí äàìä , äí ðñéâøéí àåèåîèéú òì éãé<literal>PHP</literal> áñéåí øöéú äñ÷øéôè.
</para>
</listitem>
<listitem>
<para>
<literal>CLI SAPI</literal>
<emphasis role="strong">ìà</emphasis> îùðä àú äúé÷éä äðåëçéú, ìúé÷éä ùáä øõ äñ÷øéôè !
</para>
<para>ãåîâà ùîîçéùä àú ääáãìéí á<literal>CGI SAPI</literal>:
<programlisting role="php"><![CDATA[
<?php
/* Our simple test application named test.php*/
echo getcwd(), "\n";
?>
]]></programlisting>
</para>
<para>áùéîåù áâéøñú<literal>CGI</literal>äôìè äåà :<screen><![CDATA[
$ pwd
/tmp
$ php -q another_directory/test.php
/tmp/another_directory
]]></screen>îä ùîøàä ááøåø ù <literal>PHP</literal>îùðä àú äúé÷éä äðåëçéú , ìàçú îäúé÷éåú ùáä øõ ñ÷øéôè ëøâò.</para>
<para> ùéîåù á<literal>CLI SAPI</literal> ðåúï :<screen><![CDATA[
$ pwd
/tmp
$ php -f another_directory/test.php
/tmp
]]></screen>îä ùîàôùø éåúø âîéùåú áëúéáú ëìé îòèôú á
This allows greater flexibility when writing shell tools in
<literal>PHP</literal>.
</para>
<note>
<para>
<literal>CGI SAPI</literal> úåîê á<literal>CLI SAPI</literal>áòæøú äô÷åãä<literal>-C</literal>áòú øéöä îùåøú äô÷åãä.</para>
</note>
</listitem>
</itemizedlist>
</para>
<para>øéùîú äô÷åãåú ùðéúðåú ìùéîåù îùåøú äô÷åãä òì éãé <literal>PHP</literal>, ðéúðú ìáøåø òì éãé ëúéáú <literal>PHP</literal>òí äô÷åãä <literal>-h</literal>.<screen><![CDATA[
Usage: php [options] [-f] <file> [args...]
php [options] -r <code> [args...]
php [options] [-- args...]
-s Display colour syntax highlighted source.
-w Display source with stripped comments and whitespace.
-f <file> Parse <file>.
-v Version number
-c <path>|<file> Look for php.ini file in this directory
-a Run interactively
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-z <file> Load Zend extension <file>.
-l Syntax check only (lint)
-m Show compiled in modules
-i PHP information
-r <code> Run PHP <code> without using script tags <?..?>
-h This help
args... Arguments passed to script. Use -- args when first argument
starts with - or script is read from stdin
]]></screen>
</para>
<para>ì <literal>CLI SAPI</literal>éù ùìåù ãøëéí ùåðåú , òì îðú ì÷áì àú ä÷åã ùì äúåëðéú ùàúä øåöä ìäøéõ:<orderedlist>
<listitem>
<para>ôùåè ìäâéã ì<literal>PHP</literal> ìäøéõ ÷åáõ îñåéí.</para>
<para>
<screen><![CDATA[
php my_script.php
php -f my_script.php
]]></screen>áùúé äãøëéí , òí ùéîåù á <literal>-f</literal>àå áìòãéå, éåôòì ä÷åáõ<filename>my_script.php</filename> . ðéúï ìáçåø ëì ÷åõ òí ëì ñéåîú, àéï çéåá ìäùúîù áñéåîú
<filename>.php</filename>.
</para>
</listitem>
<listitem>
<para>ìäòáéø àú ä÷åã ìáéöåò éùéø îùåøú äô÷åãä.
</para>
<para>
<screen><![CDATA[
php -r 'print_r(get_defined_constants());'
]]></screen> ðãøùú úùåîú ìá îéåçã áùéîåù áîøëàåú åáîùúðéí ùì äîòèôú.
</para>
<note>
<para>øàä áãåâîà, àéï ùéîåù áúâé äúçìä åñåó! äîúâ <literal>-r</literal>îáèì àú äöåøê áäí, ùéîåù áúâéí éåáéì ìèòåú ÷éîôåì</para>
</note>
</listitem>
<listitem>
<para>áéöåò ä÷åã ãøê ä÷ìè äñèðãøèé
(<literal>stdin</literal>).
</para>
<para>îä ùðåúï àôùøåú ìùðåú áàåôï ãéðîé, ÷åã <literal>PHP</literal>äéùø ìúåê ÷áöéí áéðàøééí ëîå áãåâîà äáàä :
<screen><![CDATA[
$ some_application | some_filter | php | sort -u >final_output.txt
]]></screen>
</para>
</listitem>
</orderedlist>ìà ðéúï ìùìá àú ùìåùú äãøëéí äàìå.
</para>
<para>
àôùø ìäòáéø, îñôø áéìúé îåâáì ùì ðúåðéí ìñ÷øéôè, (áäúàí ìîâáìåú ùì äîòèôú òöîä)
äðúåðéí éîöàå áîòøê äâìåáìé <literal>$argv</literal>. äàéáø áî÷åí ä- 0 éëéì úîéã àú ùí äñ÷øéôè, ùäåà áî÷øä ùì ÷åã <literal>PHP</literal> îâéò îä÷ìè äñèðãøèé àå îîúâ ùåøú äô÷åãä <literal>-r</literal>. äîòøê äâìåáìé äùðé<literal>$argc</literal>éëéì àú îñôø äàìîðèéí ùäåòáøå áîòøê <literal>$argv</literal>.
</para>
<para>
àñåø ìäúçéì àøâåîðèéí, ùîéåòãéí äòáøä ìñ÷øéôè, áúå <literal>-</literal> ëé àæ <literal>PHP</literal>
îðñä ìèôì áàøâåîðè áòöîä. ìîðåò àú äáòéä ðéúï ìäúùîù áúå îôøéã
<literal>--</literal>. àçøé ù
<literal>PHP</literal> úðúç àú äúå äæä , ëì àøâåîðè ùéåôéò àçøéå, éòáåø ìñ÷øéôè ììà äúéçñåú.</para>
<para>
<screen><![CDATA[
# This will not execute the given code but will show the PHP usage
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]
# This will pass the '-h' argument to your script and prevent PHP from showing it's usage
$ php -r 'var_dump($argv);' -- -h
array(2) {
[0]=>
string(1) "-"
[1]=>
string(2) "-h"
}
]]></screen>
</para>
<para>éùðä ãøê ðåñôú ìäúùîù á<literal>PHP</literal> ìëúéáú ñ÷øéôèéí ìîòèôú. ò"é äåñôä ìùåøä äøàùåðä ùì äñ÷øéôè àú äáéèåé:
<literal>#!/usr/bin/php</literal>. ùàçøéå éáåà ÷åã ä <literal>PHP</literal> ëåìì úâéåú äôúéçä åäñâéøä ùì ä <literal>PHP</literal>
àçøé ùùéðú àú îöá ä÷åáõ ,ëê ùéäé îåúø ìê ìäøéõ àåúå (ìîùì <literal>chmod +x test</literal>) àôùø ìäøéõ àú ä÷åáõ ùìê ëîå ëì ÷åáõ îòèôú.
<programlisting role="php"><![CDATA[
#!/usr/bin/php
<?php
var_dump($argv);
?>
]]></programlisting>ð÷øà ì÷åáõ <filename>test</filename> åëòú àðçðå éëåìéí ìäøéõ àåúå ëê:
<screen><![CDATA[
$ chmod 755 test
$ ./test -h -- foo
array(4) {
[0]=>
string(6) "./test"
[1]=>
string(2) "-h"
[2]=>
string(2) "--"
[3]=>
string(3) "foo"
}
]]></screen>áî÷øä ëæä , ëîå ùàôùø ìøàåú áãåâîä, àôùø ìäúùîù âí áàøâåîðèéí ùîúçéìéí áñéîï <literal>-</literal> áñ÷øéôè.</para>
<para>
<table>
<title>àåôöéåú ùåøú äô÷åãä</title>
<tgroup cols="2">
<thead>
<row>
<entry>àåôöéä</entry>
<entry>úéàåø</entry>
</row>
</thead>
<tbody>
<row>
<entry>-s</entry>
<entry>
<para>
äöâú ÷åã äî÷åø, áöåøä öáòåðéú.
</para>
<para>
äàåôöéä îééöøú âéøñú <literal>HTML</literal> öáòåðéú åîåãâùú, äéùø ìôìè äñèãøèé. ùéí ìá ùäàåôöéä ìà îéééöøú áìå÷ ùì úâé <literal><code> [...] </code></literal>
<literal>HTML</literal> , àáì ìà <literal>HTML</literal> headers.
</para>
<note>
<para>äîúâ äæä ìà éôòì áî÷áéì ìîúâ <literal>-r</literal>
</para>
</note>
</entry>
</row>
<row>
<entry>-w</entry>
<entry>
<para>
îöéâ àú ä÷åã ììà äòøåú, åúåé øååç ìáðéí.
</para>
<note>
<para>äîúâ äæä ìà éôòì áî÷áéì ìîúâ <literal>-r</literal>
</para>
</note>
</entry>
</row>
<row>
<entry>-f</entry>
<entry>
<para>
îåöéà ìôåòì àú ä÷åáõ äðúåï. äîúâ äæä îéåúø, ðéúï ìúú àú ùí ä÷åáõ ìäøöä áìòãéå..
</para>
</entry>
</row>
<row>
<entry>-v</entry>
<entry>
<para>
ëåúá àú âéøñú ä PHP, PHP SAPI, å Zend , ì÷ìè äñèðãøèé. ìãåâîà:
<screen><![CDATA[
$ php -v
PHP 4.3.0 (cli), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies
]]></screen>
</para>
</entry>
</row>
<row>
<entry>-c</entry>
<entry>
<para>
äîúâ îùîù ìúéàåø äðúéá àì ä÷åáõ
&php.ini; àå îàôùø éöéøú ÷åáõ <literal>INI</literal> çãù áî÷åí.
(ä÷åáõ ìà çééá ìäé÷øà &php.ini;), ìãåâîä:
<screen><![CDATA[
$ php -c /custom/directory/ my_script.php
$ php -c /custom/directory/custom-file.ini my_script.php
]]></screen>
</para>
</entry>
</row>
<row>
<entry>-a</entry>
<entry>
<para>
äøöú PHP áàåôï àéðèøà÷èéáé.<!--
mfischer, 20020510: Couldn't come up with a decent useful description
of the current implementation of the interactive mode.
-->
</para>
</entry>
</row>
<row>
<entry>-d</entry>
<entry>
<para>
äàåôöéä äæàú ,îàôùøú ìê ìäúàéí àú ääâãøåú á÷åáõ &php.ini;. ëùäúçáéø äåà ëæä:
<screen><![CDATA[
-d configuration_directive[=value]
]]></screen>
</para>
<para>
ãåâîà, (àéï öåøê ìñãø àú äùåøåú):
<screen><![CDATA[
# Omitting the value part will set the given configuration directive to "1"
$ php -d max_execution_time
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"
# Passing an empty value part will set the configuration directive to ""
php -d max_execution_time=
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(0) ""
# The configuration directive will be set to anything passed after the '=' character
$ php -d max_execution_time=20
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(2) "20"
$ php
-d max_execution_time=doesntmakesense
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(15) "doesntmakesense"
]]></screen>
</para>
</entry>
</row>
<row>
<entry>-e</entry>
<entry>
<para>
îééöø îéãò ðåñó åîåøçá, ìîèøåú ãéáåâ.
<!--
mfischer, 20020510: Anyone who can provide more information what it
really does (even if it's only for developers) ?
-->
</para>
</entry>
</row>
<row>
<entry>-z</entry>
<entry>
<para>
îòìä àú ääøçáåú ùì Zend. àí ðéúï ø÷ ùí ùì ÷åáõ , PHP úðñä ìäòìåú àú ääøçáåú , îäñôøéä äðåëçéú ùì äîòøëú,
(áã"ë áìéðå÷ñ æå ñôøééú <filename>/etc/ld.so.conf</filename>). äòáøú ÷åáõ + ðúéá àáñåìåèé, ìà éùúîù áçéôåù îòøëú ìðúéá äñôøéä. äòáøú ÷åáõ + ðúéá éçñé éâøåí ì <literal>PHP</literal> ìðñåú ìäòìåú àú ääøçáåú éçñéú ìñôøéä äòëùåéú.
</para>
</entry>
</row>
<row>
<entry>-l</entry>
<entry>
<para>
äàåôöéä áåã÷ú äàí á÷åã <literal>PHP</literal>ðúåï ÷ééîåú ùâéàåú. áî÷øä åàéï ùâéàåú éëúá
<literal>No syntax errors detected in <filename></literal> ìôìè äñèðãøèé, åä÷åã ùéåçæø îäîòèôú éäéä<literal>0</literal>. åî÷øä ùéù ùâéàåú éëúá<literal>Errors parsing
<filename></literal>ìôìè äñèðãøèé, åä÷åã ùéåçæø îäîòèôú éäéä<literal>255</literal>.
</para>
<para>
äàåôöéä ìà îåöàú ùâéàåú ÷øéèéåú , ìîùì (like undefined functions). òì îðú ìæäåú ùâéàåú ëàìä âí öøéê ìäùúîù áàåôöéä
<literal>-f</literal>.</para>
<note>
<para>äîúâ äæä ìà éôòì áî÷áéì ìîúâ <literal>-r</literal>
</para>
</note>
</entry>
</row>
<row>
<entry>-m</entry>
<entry>
<para>
ùéîåù áàåôöéä äæàú éâøåí ì PHP ìäãôéñ àú ëì äîåãìéí äàéðèâøìééí ùáðåééí áä åá ZEND:<screen><![CDATA[
$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype
[Zend Modules]
]]></screen>
</para>
</entry>
</row>
<row>
<entry>-i</entry>
<entry>
äåàôöéä äæàú ÷åøàú ìôåð÷öéä <function>phpinfo</function>, åîãôéñä àú äúåöàåú. àí <literal>PHP</literal> ìà îúô÷ãú áöåøä äâéåðéú, òãéó ì÷øåà ìàåôöéä <literal>php -i</literal> åìøàåú àéæä äåãòåú ùâéàä ðùìçåú, áúåê àå ìôðé èáìàåú äðúåðéí. ùéí ìá ùäôìè äåà áúöåøú <literal>HTML</literal> åìëï òìåì ìäéåú òð÷é.</entry>
</row>
<row>
<entry>-r</entry>
<entry>
<para>
äàåôöéä äæàú îàôùøú áéöåò ÷åã <literal>PHP</literal>äéùø îùåøú äôòåìä , àéï öåøê ìäåñéõó àú úâé äôúéçä åäñâéøä ùì <literal>PHP</literal> . (<literal><?php</literal> å <literal>?></literal>) åéâøîå ìèòåú ÷éîôåì, áî÷øä åéåöâå. </para>
<note>
<para>
öøéê ìäéæäø ìà ìâøåí äúðâùåú ,òí äøçáåú îùúðéí ùîáöòú äîòèôú
.
</para>
<para>
áãåâîä øåàéí ùâéàú ÷éîôåì<screen><![CDATA[
$ php -r "$foo = get_defined_constants();"
Command line code(1) : Parse error - parse error, unexpected '='
]]></screen>
äáòéä ôä ùäîòèôú sh/bash, îáöòú äçìôú îùúðéí, ìîøåú äùéîåù áîøëàåú ëôåìåú <literal>"</literal>. îàçø åäîùúðä <literal>$foo</literal> ìà îåâãø áã"ë, äåà îåøçá ìëìåí ò"é äîòèôú sh/bash, åäúåöàä ùîú÷áìú äéà ëæàú : <screen><![CDATA[
$ php -r " = get_defined_constants();"
]]></screen>
äãøê äðëåðä ìäòáéø àú ä÷åã äéà , ìäùúîù áâøù éçéã <literal>'</literal>.
îùúðéí áîçøåæú òí âøù áåãã , àéðí îåøçáéí òì éãé äîòèôú sh/bash.
<screen><![CDATA[
$ php -r '$foo = get_defined_constants(); var_dump($foo);'
array(370) {
["E_ERROR"]=>
int(1)
["E_WARNING"]=>
int(2)
["E_PARSE"]=>
int(4)
["E_NOTICE"]=>
int(8)
["E_CORE_ERROR"]=>
[...]
]]></screen>
áùéîåù áîòèôú àçøú î sh/bash, òìåìéí ìäéååöø áòéåú àçøåú, úøâéùå çåôùé ìùìåç îééì ìëúåáú , [email protected].
áäçìè àôùø ìäéú÷ì ááòéåú, ëùîðñéí ìäëðéñ îùúðéí ùì äîòèôú ìúåê ä÷åã , àå áùéîåù áúå ìåëñï àçåøé .<!-- :-) -->
</para>
</note>
<note>
<para>
<literal>-r</literal>àôùøé á<emphasis>CLI</emphasis>
SAPI àáì ìà á<emphasis>CGI</emphasis> SAPI.
</para>
</note>
</entry>
</row>
<row>
<entry>-h</entry>
<entry>
áòæøú äàåôöéä äæàú àôùø ì÷áì úéàåø òì øùéîú äàåôöéåú ù÷ééîåú åùåøú îéãò ðåñôú òì ãøê ôòåìúí .
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<!-- NEW DOCUMENTATION ENDS -->
<!-- OLD DOCUMENTED STARTS
mfischer, 20020510: I've commented out the start paragraphs of the old
documentation as it is meant to be replaced by the new one.
<para>
The command line options of the PHP executable are useful
if you would like to debug or test your PHP setup, but they
can also be handy, if you would like to use PHP for a
different purpose than web scripting.
</para>
<para>
Note, that you can always direct the output of the PHP
executable to an external file with the > character,
so <literal>php -q test.php > test.html</literal> will
print out the output of <filename>test.php</filename>
without HTTP headers to the <filename>test.html</filename>
file in the same directory.
</para>
<para>
You can only use these command line options if you have
the PHP executable. If you built the server module
version, and you have no CGI version available on your
machine, than you have no chance to use these options.
For Windows users both the PHP executable and the server
modules are in the binary package, the executable is
named <filename>php.exe</filename>.
</para>
<para>
This list of command line options is consistent with PHP 4.0.6.
You can get the actual list and some one line descriptions
with the <literal>-h</literal> option. The output of
<literal>php -h</literal> should be something like this:
<screen>
<![CDATA[
Usage: php [-q] [-h] [-s [-v] [-i] [-f <file>] | {<file> [args...]}
-q Quiet-mode. Suppress HTTP Header output.
-s Display colour syntax highlighted source.
-f <file> Parse <file>. Implies `-q'
-v Version number
-C Do not chdir to the script's directory
-c <path> Look for php.ini file in this directory
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-z <file> Load Zend extension <file>.
-l Syntax check only (lint)
-m Show compiled in modules
-i PHP information
-h This help
]]>
</screen>
</para>
<para>
Here we list some of the most important command line options
with detailed explanations.
</para>
<para>
<table>
<title>Command line options</title>
<tgroup cols="2">
<thead>
<row>
<entry>Option</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>-q</entry>
<entry>
Suppress HTTP headers output. Normally PHP prints out
HTTP headers for the calling program (ie. webserver)
to hand on to the browser. When writing command line
applications these headers are useless.
</entry>
</row>
<row>
<entry>-s</entry>
<entry>
Display the color highlighted source of the file
given with its name. This is the same as if you were
printing out the source using the
<function>highlight_file</function> function in
a PHP script.
</entry>
</row>
<row>
<entry>-f</entry>
<entry>
Parse the file given, and search for syntactical and
fatal errors. This option implies -q. Use for
debugging purposes.
</entry>
</row>
<row>
<entry>-v</entry>
<entry>
By calling PHP with this option, you can ask
it to print out its version number, ie: 4.0.6.
</entry>
</row>
<row>
<entry>-C</entry>
<entry>
Normally PHP changes the working directory to the
running scripts directory. This makes it possible
for example, to open files in the same directory,
with only specifying the name of the file. If you
would like to disable this directory change, use
this option.
</entry>
</row>
<row>
<entry>-c</entry>
<entry>
Using this option, you can specify an alternative
&php.ini; path, so PHP will
search your configurations file in this path
instead of the default one.
</entry>
</row>
<row>
<entry>-d</entry>
<entry>
With this option, you can set individual
&php.ini; settings in the
time of running a script.
</entry>
</row>
<row>
<entry>-l</entry>
<entry>
Check the file given for syntax errors. This
option implies -q. Use for debugging purposes.
This option won't find fatal errors (like undefined
functions). Use -f if you would like to test
for fatal errors too.
</entry>
</row>
<row>
<entry>-m</entry>
<entry>
Using this option, PHP prints out the built in
(and loaded) PHP and Zend modules, the PHP
and Zend version numbers, and a short Zend
copyright notice.
</entry>
</row>
<row>
<entry>-i</entry>
<entry>
This command line option calls
<function>phpinfo</function>, and prints
out the results. If PHP is not working well,
it is advisable to make a <literal>php -i</literal>
and see if any error messages are printed out
before or in place of the information tables.
</entry>
</row>
<row>
<entry>-h</entry>
<entry>
With this option, you can get information about
the actual list of command line options and some
one line descriptions about what they do.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
-->
<para>
àôùø ìäøéõ úåëðéåú PHP ,áìé ÷ùø ìùøú øùú. áîòøëú éåðé÷ñ , öøéê ìäåñéó ùåøú ÷åã áúçéìú äñ÷øéôè, åìäôåê àú äúåëðéú ìîàåôùøú äøöä áäâãøåú äéåðé÷ñ, úçú îòøëú äôòìä çìåðåú áòæøú ä÷ì÷ä ëôåìä òì ä÷åáõ, àå áéöéøú ÷åáõ àöååä ùéøéõ àú äúåëðéú. ùåøú ä÷åã ùäåñôä ìéåðé÷ñ ìà úôøéò ìøéöú äúåëðéú áçìåðåú, ëê ùðéúï ìëúåá úåëðéú ùîúàéîä ìùðé äîòøëåú âí éçã. ìãåâîä: </para>
<para>
<example>
<title>ñ÷øéôè ùîéåòã ìäôòìä îùåøú äô÷åãä. (script.php)</title>
<programlisting role="php"><![CDATA[
#!/usr/bin/php
<?php
if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>
This is a command line PHP script with one option.
Usage:
<?php echo $argv[0]; ?> <option>
<option> can be some word you would like
to print out. With the --help, -help, -h,
or -? options, you can get this help.
<?php
} else {
echo $argv[1];
}
?>
]]></programlisting>
</example>
</para>
<para>
äåñôðå ùåøä îéåçãú áøàùéú äñ÷øéôè, ùàåîøú ìîòøëú ùä÷åáõ öøéê ìäéåú îåøõ ò"é îôòðç ùì PHP. áâìì ùäùúîùðå áâéøñä ùì CLI , ìà éùìçå HTTP header ìôìè. ðéúï ìäúùîù áùðé îùúðéí áñ÷øéôè, <varname>$argc</varname>, îñôø äàøâåîðèéí +1 (ùí äñ÷øéôè), å <varname>$argv</varname>, îòøê ùîëéì àú ëì äàøâåîðèéí áñ÷øéôè, (ëùùí äñ÷øéôè ðîöà áî÷åí àôñ ùìå,<varname>$argv[0]</varname>).
</para>
<para>
áúåëðéú ìîòìä áã÷ðå, äàí éù éåúø îàøâåîðè àçã àå ôçåú, åäàí äàøâåîðè ùéùðå äåà, <literal>--help</literal>,
<literal>-help</literal>, <literal>-h</literal>àå<literal>-?</literal>,
äãôñðå àú äåãòú äòæøä, äãôñðå àú ùí äñ÷øéôè áöåøä ãéðàîéú. àú ùàø äàøâåîðèéí àí äéå äãôñðå .
</para>
<para>
áùáéì ìäøéõ àú äñ÷øéôè áéåðé÷ñ ,öøéê ìúú ìå äøùàú áéöåò, åì÷øåà ìå ôùåè ëê,
<literal>script.php echothis</literal>àå<literal>script.php -h</literal>. áçìåðåú àôùø ìäëéï ÷åáõ àöååä ìîùéîä äæàú :
</para>
<para>
<example>
<title>÷åáõ àöååä , òì îðú ìäøéõ ñ÷øéôèéí ùì PHP, îùåøú äô÷åãä (script.bat)</title>
<programlisting role="shell">
@c:\php\cli\php.exe script.php %1 %2 %3 %4
</programlisting>
</example>
</para>
<para>
áäðçä ù÷øàú ìúåëðéú ìîòìä áùí
<filename>script.php</filename>, åéù ìê àú ä
CLI <filename>php.exe</filename> áúåê <filename>c:\php\cli\php.exe</filename> ÷åáõ äàöååä äæä, éøéõ àú æä áùáéìê ,òí äàôùøåéåú äðåñôåú:
<literal>script.bat echothis</literal>àå<literal>script.bat -h</literal>.
</para>
<para>øàä âí îñîëé äøçáä ùì, <link linkend="ref.readline">Readline</link>
ìôåð÷öéåú ðåñôåú ùáéëåìúê ìäùúîù, ìùôø àú úåëðéåú ùåøú äô÷åãä á PHP.
</para>
</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:"../../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
-->
Index: phpdoc-he/features/connection-handling.xml
+++ phpdoc-he/features/connection-handling.xml
<?xml version="1.0" encoding="WINDOW-1255"?>
<!-- $Revision: 1.1 $ -->
<!--EN-Revision: 1.14 Maintainer: noam Status: working -->
<chapter id="features.connection-handling">
<title>èéôåì áäúçáøåú</title>
<note>
<para>äçì îâéøñä 3.0.7 åäìàä.</para>
</note>
<para>
îáôðéí çéáåø á PHP äåà áîöá äúîãä. éù ùìåùä ñèèåñéí àôùøééí :
<itemizedlist>
<listitem>
<simpara>0 - NORMAL</simpara>
</listitem>
<listitem>
<simpara>1 - ABORTED</simpara>
</listitem>
<listitem>
<simpara>2 - TIMEOUT</simpara>
</listitem>
</itemizedlist>
</para>
<simpara>
áäøöä øâéìä ùì PHP äñèèåñ ùì äçéáåø äåà òì îöá NORMAL .
àí ä÷ìééðè äîøåç÷ îúðú÷, éåãì÷ ãâì îöá ABORTED . äñéáä ìðéúå÷ ëæä áãøê ëìì ðâøîú áâìì ìçéöä ùì ä÷ìééðè òì ëôúåø "òöåø" - " STOP" . àí PHP ëåôä äâáìú æîï) øàä
<function>set_time_limit</function>) ,ãâì îöá TIMEOUT éãì÷.</simpara>
<simpara>
éù áéëåìúê ìäçìéè äàí àçøé àéøåò ùì ðéúå÷ äîùúîù , äñ÷øéôè éøåõ òã ñåôå àå éòöø, ìôòîéí úøöä ùäñ÷øéôè éîùéê ìøåõ òã úåîå, àáì áã"ë ,åæåäé âí áøéøú äîçãì, äñ÷øéôè éòöø òí ðéúå÷ äîùúîù. àôùø ìùðåú àú ääúðäâåú äæàú ãøê ääâãøä ignore_user_abort &php.ini; àå ãøê ääâãøä äîúàéîä á÷åðôéâåøöéä ùì àôö'é, "php_value ignore_user_abort" àå òí äôåð÷öéä<function>ignore_user_abort</function> . àí ìà úâéã ì PHP ìäúòìí îðèéùä ùì ä÷ìééðè , äñ÷øéôè ùìê éçåñì. äàåôöéä äéçéãä äéà, ìøùåí " ôåð÷öéú ëéáåé " ( shutdown
function) áòæøú <function>register_shutdown_function</function>. ëùéù ôåð÷öéú ëéáåé, áî÷øä åîùúîù äîøåç÷ äúðú÷, áôòí äáàä ùäñ÷øéôè éðñä ìäåöéà îùäå ìôìè, PHP úâìä ùä÷ùø äúðú÷ ,åú÷øà ìôåð÷öéú äëéáåé, äôåð÷öéä úé÷øà âí áî÷øä åäñ÷øéôè äñúééí áöåøä ðåøîìéú, ëê ùëãé ìäáçéï áéï ÷øéàä ìôåð÷öéä áöåøä ðåøîìéú ì÷øéàä áî÷øä ùì äúðú÷åú ôúàåîéú , éù ìäùúîù áôåð÷öéú<function>connection_aborted</function>
. äôåð÷öéä îçæéøä àîú àí äéä ðéúå÷ çéöåðé ëôåé.</simpara>
<simpara>
äñ÷øéôè ùìê éëåì ìäéòöø ,âí ò"é ,äèééîø äîåáðä ùáëì ñ÷øéôè, æîï áøéøú äîçãì ìøéöä ùì ñ÷øéôè äåà 30 ùðéåú. ðéúï ìùðåú àú äæîï äæä , áäâãøä max_execution_time &php.ini; , àå ãøê ääâãøä äîúàéîä á÷åðôéâåøöéä ùì àôö'é "php_value max_execution_time" àå òí äôåð÷öéä <function>set_time_limit</function> . ëùúí äæîï áèééîø äñ÷øéôè éòöø åàí ÷ééîú ôåð÷öéú ëéáåé äéà úé÷øà, áùáéì ìãòú àí ñéáú òöéøú äñ÷øéôè äéúä áâìì ùéîåù áèééîø, éù ìäùúîù áôåð÷öéä <function>connection_timeout</function>. äôåð÷öéä îçæéøä àîú àí äðéúå÷ äéä áâìì úåí æîï äøéöä ùäåâãø.</simpara>
<simpara>
äòøä : éù àôùøåú ùâí îöá ABORTED åâí îöá TIMEOUT , éäéå ôòéìéí áàåúå äæîï, ìîùì àí äøöú ñ÷øéôè, åäâãøú ì PHP ìäúòìí îëéáåé ëôåé, åìäîùéê àú øéöú äñ÷øéôè, äîúùîù ùäúðú÷ âøí ìãâì ABORTED, ìäéåú ãìå÷, åäñ÷øéôè ùäîùéê ìøåõ ëåì ìäòéöø ò"é îâáìú æîï äøéöä åìäãìé÷ âí àú ãâì TIMEOUT .áî÷øä ëæä ôåð÷éú äëéáåé ùìê , àí éöøú ëæàú, úâìä ùâí <function>connection_timeout</function> åâí<function>connection_aborted</function> îçæéøéí àîú.
àôùø âí ìáãå÷ àú ùðé äîöáéí á÷øéàä ìàçú ìôåð÷öéä ,
<function>connection_status</function>. äôåð÷öéä äæàú îçæéøä ùãä áéèéí, ùì äîöá äôòéì, ìîùì áî÷øä ëæä äôåð÷öéä úçæéø àú äòøê 3.</simpara>
</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:"../../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
-->
Index: phpdoc-he/features/http-auth.xml
+++ phpdoc-he/features/http-auth.xml
<?xml version="1.0" encoding="WINDOW-1255"?>
<!-- $Revision: 1.1 $ -->
<!--EN-Revision: 1.36 Maintainer: noam Status: working -->
<chapter id="features.http-auth">
<title> àéîåú HTTP áòæøú PHP.</title>
<simpara>
àéîåú HTTP á PHP , òåáã ø÷ òí îåãåì Apache , åìëï ìà éòáåã áâéøñú ä CGI .
áîåãåì ùì Apache áñ÷øéôèéí ùì PHP , éù àôùøåú ìäúùîù áúëåðú ä
<function>header</function> òì îðú ìùìåç "á÷ùú àéîåú" - "Authentication Required", ìãôãôï äì÷åç, ùúâøåí ìå ìä÷ôéõ àú çìåï ä"ùí\ñéñîà". àçøé ùäîùúîù îéìà àú äðúåðéí, äëúåáú URL ùîëéìä àú äñ÷øéôè úé÷øà ùåá, òí ä PHP script will be called again with the
<link linkend="reserved.variables">îùúðéí ùîåâãøéí îøàù </link>
<varname>PHP_AUTH_USER</varname>, <varname>PHP_AUTH_PW</varname>,
å <varname>AUTH_TYPE</varname> áäí îåæðéí , ùí äîùúîù, äñéñîà, åñåâ äàéîåú. äîùúðéí äàìä ðîöàéí áîòøê<link linkend="reserved.variables.server">$_SERVER</link>åáîòøê <varname>$HTTP_SERVER_VARS</varname> . ø÷ àéîåú "áñéñé" ðúîê. øàä àú äôåð÷öéåú òì <function>header</function> ìîéãò ðåñó.
</simpara>
<note>
<title>äòøú âéøñä ùì PHP.</title>
<para>
<link linkend="language.variables.superglobals">Autoglobals</link>,
ëîå<link linkend="reserved.variables.server">$_SERVER</link>, äúçéìå ìäéåú æîðéí äçì îâéøñä<ulink url="&url.php.release4.1.0;">4.1.0</ulink>.
<varname>$HTTP_SERVER_VARS</varname> äúçéì ìäéåú æîéï äçì î PHP 3.
</para>
</note>
<para>
ãåâîà ì÷èò ÷åã ùéëôä àéîåú òì äì÷åç, áîäìê øéöú äòîåã </para>
<para>
<example>
<title>ãåâîà ìàéîåú HTTP .</title>
<programlisting role="php"><![CDATA[
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>
]]></programlisting>
</example>
</para>
<note>
<title>äòøú úàéîåú</title>
<para>
öøéê ìäéæäø áòú ÷éãåã ëåúøåú ùì HTTP. îàçø åòì îðú ì÷áì úàéîåú î÷ñéîìéú, îéìú "Basic" öøéëä ìäéëúá áúçéìéú âãåìä "B", äîçøåæú çééáú ìäñúééí áîøëàåú ëôåìåú , åìà áîøëà áåããú,
åáãéå÷ øååç àçã çééá ìäéåú ìôðé ä÷åã <emphasis>401</emphasis> á <emphasis>HTTP/1.0 401</emphasis> ùåøú äëåúøú.
</para>
</note>
<para>
áî÷åí ìëúåá áôùèåú <varname>PHP_AUTH_USER</varname>
å <varname>PHP_AUTH_PW</varname>, ëîå áãåâîä ìîòìä ,
àåìé úøöä ìååãà àú ðëåðåú ùí äîùúîù åäñéñîà, ò"é ùàéìúà ìáñéñ äðúåðéí, àå ò"é ôðéä ì÷åáõ.
</para>
<para>
äæäø îãôãôï à÷ñôìåøø , åîäáàâéí áå, äåà ãåøù ùìéçä îãåé÷ú ùì ëåúøåú ä HTTP. ùìéçä ùì äëåúøú
<emphasis>WWW-Authenticate</emphasis>ìôðé äëåúøú , <literal>HTTP/1.0 401</literal> ðøàú ëùéèä äèåáä ìäùúîù áä. </para>
<simpara>
äçì î PHP âéøñä 4.3.0, áîèøä ìîðåò àú äéëåìú ìëúåá ñ÷øéôè in ùéçùåó àú äñéñîà , îùúðé äá PHP_AUTH ìà é÷áòå àí îåúøú âéùä ìàéîåú îî÷åø çéöåðé, ìòîåã äñôöéôé , åîöá &safemode; îàåôùø. îòáø ìæä, àôùø ìäùúîù á <varname>REMOTE_USER</varname> ìæéäåé ùì îùúîù òí àéîåú çéöåðé, ëê ùàúä éëåì ìäùúîù
<varname>$_SERVER['REMOTE_USER']</varname>.
</simpara>
<note>
<title>äòøú ÷åðôéâåøöéä.</title>
<para>
PHP îùúîùú áðåëçåú äðçéä<literal>AuthType</literal> ì÷áåò äàí éäéä àô÷è ìàéîåú çéöåðé.
</para>
</note>
<simpara>
ùéí ìá, àéï îðéòä ìîéùäå ùéù ìå ùìéèä òì ëúåáú URL ìà îàåîúú, ìâðåá ñéñîàåú îëúåáú îàåîúú òì àåúå ùøú.
</simpara>
<simpara>
âí ðèñ÷ééô åâí àéðèøðè à÷ñôìåøø , éð÷å àú ä÷ù ùì äì÷åç, á÷áìú äåãòú ùâéàä 401 îäùøú. ãáø æä éëåì ìùîù áéòéìåú, ìäåöàú äîùúîù îäîòøëú , "log out",åäëøçúå ìäøùí îçãù ò"é äåñôú ùí îùúîù åñéñîà. àôùø ìäúùîù áæä âí ìéöéøú îðâåï "time out" , àå ìñô÷ ëôúåø éöéàä "log-out" .
</simpara>
<para>
<example>
<title>ãåâîà ìàéîåú HTTP </title>
<programlisting role="php"><![CDATA[
<?php
function authenticate() {
header('WWW-Authenticate: Basic realm="Test Authentication System"');
header('HTTP/1.0 401 Unauthorized');
echo "You must enter a valid login ID and password to access this resource\n";
exit;
}
if (!isset($_SERVER['PHP_AUTH_USER']) ||
($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
authenticate();
}
else {
echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br>";
echo "Old: {$_REQUEST['OldAuth']}";
echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='POST'>\n";
echo "<input type='hidden' name='SeenBefore' value='1'>\n";
echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}'>\n";
echo "<input type='submit' value='Re Authenticate'>\n";
echo "</form></p>\n";
}
?>
]]></programlisting>
</example>
</para>
<simpara>
ääúðäâåú äæàú ìà îúá÷ùú ò"é ñèðãøè äàéîåú äáñéñé ùì HTTP
, ìëï àñåø ìñîåê òì æä . ìîùì áãôãôï Lynx àéï áéèåì ùì ä÷ù ,ìîøåú äåãòú ùâéàä 401 ùì äùøú, ëìåîø áìçéöä ÷ãéîä åàçåøä áãôãôï, éôúçå ùåá àú äâéùä ìîùàáéí, åäñéñîà úîåçæø. ìîøåú æàú äîùúîù éëåì ììçåõ òì î÷ù
'_' òì îðú ìð÷åú àú îéãò äàéîåú..
</simpara>
<simpara>
äòøä ðåñôú , òã ì PHP âéøñä 4.3.3, àéîåú HTTP ìà òáã áéçã òí ùøú îé÷øåñåôè IIS òí âøñú CGI ùì PHP áâìì äâáìåú ùì ùøú ä IIS. áîèøä ìâøåí ìàéîåú ìòáåã òí PHP 4.3.3+,
çééáéí ìòøåê àú ä÷åðôéâåøöéä ùì ä "Directory Security" áùøú ä IIS . äëðñ ìúëåðä "òøåê" - "Edit" åúãàâ ùø÷ äëôúåø "ëðéñä àðåðéîéú" - "Anonymous Access" éäéä ãìå÷ áòåã ùàø äùãåú éäéå îëåáéí.
</simpara>
<simpara>
äâáìä ðåñôú áùéîåù áîåãåì ùì ä IIS (ISAPI), àúä ìà úåëì ìäùúîù áîùúðä<literal>PHP_AUTH_*</literal> àìà, áîùúðä
<literal>HTTP_AUTHORIZATION</literal> áî÷åí. ìãåâîà ä÷åã äáà : <literal>list($user, $pw) = explode(':',
base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));</literal>
</simpara>
<note>
<title>äòøú IIS :</title>
<simpara>
òì îðú ùàéîåú HTTP éòáåã òí ùøú IIS, äâãøú PHP
<link linkend="ini.cgi.rfc2616-headers">cgi.rfc2616_headers</link>çééáú ìäéåú ÷áåòä ì- <literal>0</literal> (òøê áøéøú äîçãì).
</simpara>
</note>
<note>
<para>àí<link linkend="ini.safe-mode">safe mode</link> áîöá îàåôùø, îæää äîùúîù (uid) ùì äñ÷øéôè ðåñó ìúçåí ääëøä(<literal>realm</literal> ) ùì ëåúøú ä <literal>WWW-Authenticate</literal> .
</para>
</note>
</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:"../../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
-->
Index: phpdoc-he/features/persistent-connections.xml
+++ phpdoc-he/features/persistent-connections.xml
<?xml version="1.0" encoding="WIINDOW-1255"?>
<!-- $Revision: 1.1 $ -->
<!--EN-Revision: 1.21 Maintainer: momo Status: working -->
<chapter id="features.persistent-connections">
<title>÷éùåø îúîùê (ò÷ùðé) ìáñéñ äðúåðéí.</title>
<simpara>
÷éùåø îúîùê, äåà ÷éùåø SQL ùìà ðñâø áùòú ñéåí áéöåò øéöú äñ÷øéôè. ëùðåöø ÷éùåø îúîùê, PHP îçôùú ÷éùåø îúîùê æää ùëáø ÷ééí åîúçáøú ìáñéñ äðúåðéí ãøëå, àí àéï ÷éùåø ëæä ÷ééí, PHP éåöøú ÷éùåø çãù. ÷éùåø "æää" ðçùá ÷éùåø ìàåúå áñéñ ðúåðéí, òí àåúå ùí îùúîù, åàåúä ñéñîà (àí ÷ééîú).</simpara>
<note>
<para>
éù äøçáåú ðåñôåú ùîñô÷åú ÷éùåø îúîùê ìîùì: <link linkend="ref.imap">IMAP extension</link>.
</para>
</note>
<simpara>
àðùéí ùàéðí á÷éàéí áùøê ùáä ùøúé òåáãéí , òìåìéí ìçùåá ù÷éùåø îúîùê îàôùø ìäí ,ìôúåç ëîä ñùðéí áàåúå ÷éùåø ìáñéñ äðúåðéí, àå ìäåöéà ìôåòì èøðæ÷öéåú áöåøä éòéìä, <emphasis>äí èåòéí</emphasis>. ìîòï äàîú ÷éùåø îúîùê ìà éëåì ìòùåú ùåí ãáø ù÷éùåø øâéì ìà îñåâì ìòùåú.</simpara>
<simpara>ìîä?</simpara>
<simpara>
æä ÷ùåø ìöåøä ùáä ùøúé øùú òåáãéí, éù ùìåù öåøåú òé÷øéåú ùì èéôåì áéöåø ãôé øùú ò"é PHP áéãé ùøúéí.
</simpara>
<simpara>
äùéèä äøàùåðä äéà ìäúùîù á PHP ëîå òåèó CGI (CGI "wrapper"). áùéèä äæàú ðåöøú åðäøñú, éãéú ùì îôòðç PHP áùáéì ëì á÷ùú ãó, áâìì ùäéãéú ðäøñú òí ëì á÷ùä, âí ëì äîùàáéí ðäøñéí éçã àéúä , (ëåìì âí ÷éùåø ìáñéñ äðúåðéí) ëìåîø, àéï ùåí ååç îùéîåù á÷éùåø îúîùê òì ùøú ëæä, äåà ôùåè ìà îúîùê!</simpara>
<simpara>
äùéèä äùðéä ,äôåôåìøéú áéåúø , äéà ìäøéõ àú PHP ëîåãåì áùøú îñåâ
multiprocess web server, ëøâò äëååðä ø÷ ìàôö'é (Apache).
multiprocess server - äåà ùøú ùéù ìå úäìéê àáà àçã øàùé (the parent) ùîúàí áéï úäìéëé áðéí (its children) ùìîòùä òåùéí àú äòáåãä ùì ùì ìçì÷ ãôé øùú. ëì á÷ùä ùîâéòä îîùúîù , ðîñøú ìàçã îúäìéëé äáðéí, ùàéðå îèôì áîùúîù àçø , æä àåîø ùëùì÷åç îá÷ù á÷ùä ðåñôú äåà òìåì ìäéåú îùåéê ìàçã îúäìéëé äáðéí, ìàå ãåå÷à ìúäìéê ùùéøú àåúå ìôðé æä. ÷éùåø îúîùê ãåàâ ùàí úäìéê áï îñåéí äúçáø ìáñéñ äðúåðéí, åáé÷ù îéãò, àåúå úäìéê áï òöîå , éåëì ìäú÷ùø ìùøú ùðéú áòæøú ä÷éùåø ùëáø ÷ééí, áî÷øä åùåá äåà éøöä îéãò îàåúå áñéñ ðúåðéí.
</simpara>
<simpara>
äùéèä äàçøåðä äéà, ìäùúîù á PHP ëúåñó úåëðä (plug-in) áùøú îøåáä úäìéëåðéí (multithreaded web
server). ëøâò PHP 4 úåîëú á ISAPI, WSAPI, å NSAPI òì îòøëú äôòìä çìåðåú, ëùëåìí îàôùøéí ì PHP ìäéåú úåñó úåëðä òì ùøúéí ëãåâîú Netscape FastTrack (iPlanet), Microsoft's Internet Information
Server (IIS), and O'Reilly's WebSite Pro. äúðäâåú ä÷éùåø æää ìäúðäâåú òì ùøúéí, ùäåæëøå áñòéó ä÷åãí. ùéí ìá ùúîéëä á
SAPI àéðä ÷ééîú á PHP 3.
</simpara>
<simpara>
àí áòöí ì÷éùåø îúîùê, àéï îîù äùôòä òì éëåìåú äáéöåò, áùáéì îä öøéê àåúå?
</simpara>
<simpara>
äúùåáä îàåã ôùåèä -éòéìåú. ÷éùåø îúîùê èåá áòé÷ø àí úäìéê ääú÷ùøåú òöîå, ìáñéñ äðúåðéí, äåà é÷ø , äñéáåú ìòìåú é÷øä ùì äú÷ùøåú , éëåìåú ìäéåú îâååðåú, äçì ñåâ áñéñ äðúåðéí, äîé÷åí ùìå éçéñú ìùøú, ëîä òñå÷ äîçùá ùòìéå éåùá áñéñ äðúåðéí, åòåã. áùåøä äúçúåðä íà òìåú ä÷éùåø ìáñéñ äðúåðéí é÷øä , äøååç ùîåùâ î÷éùåø îúîùê âãì. ÷éùåø îúîùê éâøåí ìëì úäìéê áï ìäú÷ùø ø÷ ôòí àçú áçééå ìáñéñ äðúåðéí, áî÷åí áëì á÷ùä åá÷ùä.</simpara>
<simpara>
ùéí ìá , éù ìæúëåðä æå âí öããéí ÷åãøéí, àí ìîùì ìáñéñ äðúåðéí éù äâáìä òì îñôø ääú÷ùøéåú äàôùøéåú, ááú àçú, ìîùì ì16 äú÷ùøåéåú, åëì úäìéê áï éôúç ÷éùåø îùì òöîå, ùìà éñâø , àì áñéñ äðúåðéí, äçì îäúäìéê ä17 ùéðñä ì÷áì ðúåðéí , úéååöø áòéä, áñéñ äðúåðéí éåöó áîäéøåú, áòé÷ø àí éù áâéí áñ÷øéôè ùìê, ëîå ìåìàåú àéðñåôéåú, ëê ùä÷éùåø ìà éôñ÷, åáñéñ äðúåðéí éùàø ú÷åò. úåëì ìøàåú áúéòåã ùì áñéñ äðúåðéí ùìê , îä äåà ðåäâ ìòùåú ìäú÷ùøåú ùàéðä îâéáä.
</simpara>
<warning>
<simpara>
éù òåã ùðé îå÷ùéí, áùéîåù á÷éùåø îúîùê. òáåãä òí ðòéìú èáìàåú, åùéîåù áèøðæ÷öéåú. áòáåãä òí ðòéìú èáìàåú àí îùåí îä äñ÷øéôè ìà ùéçøø àú ðòéìú äèáìàåú, äñ÷øéôè äáà áúåø ùéðñä ìâùú ìðúåðéí áàúå ÷éùåø, éîöà àú òöîå, îåì èìáàåú ðòåìåú, îä ùòåìå ìäöøéê àéúçåì îçåãù ùì ùøú ä httpd àå ùì ùøú áñéñ äðúåðéí. âí áìå÷ ùì èøðæ÷öéä ,éòáåø ìñ÷øéôè äáà, áä÷øä åäñ÷øéôè ìà ñâø àåúå, åéâøåí ìáòéåú ãåîåú. äôúøåï äôùåè ìáòéåú àìä äåà ùéîåù áôå÷öéä <function>register_shutdown_function</function> ì÷áåò ôåð÷öéä ëéáåé ôùåèä, ìôúåç èáìàåú ðòåìåú, åìñâøåú èøðæ÷öéåú ôåòìåú, åäôúøåï äéåúø ôùåè àôéìå äåà, ôùåè ìà ìäúùîù á÷éùåø îúîùê, áî÷áéì ìùéîåù áðòéìú èáìàåú àå áèøðæ÷öéåú.
</simpara>
</warning>
<simpara>
ìñéëåí : ÷éùåø îúîùê ðåòã ìäéåú î÷áéì ì÷éùåø øâéì, ëìåîø àôùø <emphasis>úîéã</emphasis> ìäçìéó ÷éùåø îúîùê á÷éùåø øâéì ,ììà äùôòä òì äãøê ùáä äñ÷øéôè éòáåã, ëðøàä àáì æä éùôéò òì <emphasis>äéòéìåú</emphasis>ùáä éòáåã äñ÷øéôè</simpara>
<para>øàä âí<function>fbsql_pconnect</function>,
<function>ibase_pconnect</function>, <function>ifx_pconnect</function>,
<function>imap_popen</function>, <function>ingres_pconnect</function>,
<function>msql_pconnect</function>, <function>mssql_pconnect</function>,
<function>mysql_pconnect</function>, <function>ociplogon</function>,
<function>odbc_pconnect</function>, <function>ora_plogon</function>,
<function>pfsockopen</function>, <function>pg_pconnect</function>, å
<function>sybase_pconnect</function>.
</para>
</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:"../../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
-->