��ȫ����

PHP��һ��ǿ�����Ժͽ�����,������Ϊһ��ģ�������web server�л���ΪCGI������ִ��,�����Դ�ȡ�ļ���ִ������ʹ򿪷������ϵ��������ӡ�������Щ����ʹ���κ�������web server�ϵĶ�����IJ���ȫ�� PHP����Ƴ�һ�ֱ�Perl��C��ȫ�ö��CGI�����������, ͨ����ȷѡ��compile-time�� runtime������ѡ���������ɵ���ϳ�������İ�ȫ�ԡ�

��Ϊ�ж���;��ʹ��PHP,Ҳ����������������ѡ������������ һ��ѵ�ѡ���֤���ܽ�PHP���ںܶ�Ŀ��, ����Ҳͬʱ��ζ����Щѡ�����Ϻͷ����������ÿ��ܵ��²���ȫ�Ľ������һ��˵���˲�ͬ�����������Ϻ������ܱ���ȫӦ�õij��ϡ�

CGI binary

���ܵĹ���

����ijЩԭ��PHP��װ��һ��CGI���򣬶�����Ϊweb server��ģ����setupʱ��һ��ѡ��(�� Apache),����Ҳ���Խ�PHP�Ͳ�ͬ���͵�CGI���������Խ�����ȫ��chroot��script��setuid����������������ͨ��PHP�Ŀ�ִ�в��ַŵ�web server��cgi-binĿ¼��CERT �����׼ CA-96.11 �ٴν��齫�κεĽ������ŵ�cgi-bin�¡�PHP���������������Ϊһ�������Ľ�����,������Ƶ��ܷ�ֹ���������:

Case 1: ֻ��public�ļ�����

�����ķ�����ÿ��Ŀ¼���п������IP��ȡ���ƣ��ⲿ�ֵ����þͲ���Ҫ�ˡ�������web server���������ض���, ����û�취֪ͨPHP����ij���ض��������ǰ�ȫ���ض�������������� --disable-force-cgi-redirect �������������script�����㻹��ȷ�����PHP script����û��������ͨ�취���ã��Ȳ���ֱ���� http://my.host/cgi-bin/php/dir/script.php3 ��Ҳ������ http://my.host/dir/script.php3�ض���

�ض����ܿ������ã�������apache������AddHandler��Actionָ������ (����).

Case 2: ʹ�� --enable-force-cgi-redirect

compile-timeѡ����ֹ�κ�����������http://my.host/cgi-bin/php/secretdir/script.php3�ķ���ֱ�ӵ���PHP��ȡ����֮���ǣ�����ģʽ��PHP���������������Ƿ�ͨ����web server���ض�����

ͨ����Apache���������ض����ָ������д:

Action php3-script /cgi-bin/php
AddHandler php3-script .php3

�˹��ܽ���Apache web server�²���ͨ��, ����Ҫ��Apache�DZ�׼CGI��������REDIRECT_STATUS����Ϊ redirected requests��������web serverû���ṩ�κη���������������ֱ�������Ǽ������Ļ�����Ͳ���ʹ��������ܣ�Ҫ�������イ����������CGI�汾�ķ�����

Case 3: ���� doc_root �� user_dir

�����е�����, ��script�Ϳ�ִ�г���ŵ�web server��documentĿ¼������Ϊ�Dz���ȫ�������������һЩ���ô���ʹ��scriptû��ִ�У�����ʾ��ͨ����HTML�ĵ�,�����¼������ܻ�ȫ��Ϣ�������룩��й¶��Ϊ��һЩϵͳ����Ա��Ը��script���򵥶�������һ��ֻ����PHP CGI��ȡ��Ŀ¼,���Ҳ���ʾ�κ�����������Ϣ��

���ϲ���һ����������web serverû���ṩ�κη���������������ֱ�������Ǽ������Ļ�,����Ҫ��script����һ����ͬ��web document root��Ŀ¼doc_root��

�����ͨ��php3.ini�ļ��е�����ָ�� doc_root ���涨PHP script����ĸ�Ŀ¼����Ȼ���û�������PHP_DOCUMENT_ROOTҲ���ԡ������������, CGI�汾��PHP���������е�·����Ϣ��doc_root�ϳ������γ��������ļ�·��,�������Է��Ĵ�Ŀ¼����û���κ�script�����ܱ�ִ��(ʹ������user_dir �ij���).

�ڴ���һ������ѡ���� user_dir����û����user_dirʱ���������ļ���ȡ����doc_root����http://my.host/~user/doc.php3���URL��û�д��û�����Ŀ¼�µ��ļ�, ���Ǵ���doc_rootĿ¼��һ����~user/doc.php3 ���ļ�(��һ����ʼ��~ ��Ŀ¼��).

���user_dir���public_php,һ������http://my.host/~user/doc.php3�����󣬽����û�����Ŀ¼�µ�public_phpĿ¼�µ�doc.php3 �ļ�������û�������Ŀ¼��/home/user, ����ļ����� /home/user/public_php/doc.php3.

����doc_root��ô����user_dir ���ᷢ����չ����������Ե�������documentĿ¼���û�Ŀ¼��

Case 4: PHP �ŵ�web������ĵط�

һ���Ƚϰ�ȫ�ķ����ǰ�PHP������ŵ�web������ĵط�������ŵ� /usr/local/binĿ¼���������ʹ�㲻�ò����κκ���PHP������ļ��ĵ�һ�з�������:

#!/usr/local/bin/php

��һ�䡣 �㻹��Ҫ������ļ���Ϊ��ִ�С������ͬʹ��#!���ŵ�Perl��sh���κ�������CGI����һ���� 

Ϊ��ʹPHP��ȷ�Ĵ����������õ�PATH_INFO��PATH_TRANSLATED��Ϣ, php����������ʹ��--enable-discard-path ����ѡ�������롣

Apache �

��PHP��ΪApache��ģ��������ʱ���̳���Apache�İ�ȫ���á��κε��ļ�����Ҫ����Apache���ϸ��飬 ֻ��ͨ����������ű�����PHP��