Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > Apache 2: php5 как cgi-приложение...


Автор: CyraxZ 20.9.2008, 15:59
До настоящего момента работал с php, установленным в качестве модуля. Всё нормально работало.
Возникла необходимость работы с php как с cgi-приложением. Для этой трансформации
я в файле httpd.conf заменил строки
Код

AddType application/x-httpd-php phtml php 
LoadModule php5_module "C:/GPL/PHP/php5apache2_2.dll 

на строки
Код

AddType application/x-httpd-php phtml php  
<Directory "C:/GPL/PHP/">   
  Options ExecCGI   
</Directory>   
ScriptAlias "/php_dir/" "C:/GPL/PHP/"   
Action application/x-httpd-php "/php_dir/php-cgi.exe" 

так, как было указано в двух статьях из инета.

Но при этом браузер выводит ошибку
Цитата

FORBIDDEN. You don't have permission to access /php_dir/php-cgi.exe/index.php on this server. 

Странно, почему здесь фрагмент /php_dir/ не заменён на C:/GPL/PHP/...

Если убрать ScriptAlias
Код

AddType application/x-httpd-php phtml php  
<Directory "C:/GPL/PHP/">   
  Options ExecCGI   
</Directory>   
Action application/x-httpd-php "C:/GPL/PHP/php-cgi.exe" 

выводится уже другая ошибка:
Цитата

NOT FOUND. The requested URL /GPL/PHP/php-cgi.exe/index.php was not found on this server. 

А здесь уже куда-то-то исчез фрагмент "C:/"...

Одним словом, не работает. Может, где ещё чего изменить ?

Автор: CyraxZ 20.9.2008, 18:36
Проблема решена. Достаточно было внутри конструкции Directory указать Allow from all,
что означает разрешение доступа к этой папке с любых ip-ников:
Код
AddType application/x-httpd-php phtml php 
<Directory "C:/GPL/PHP/">  
  Allow from all
  Options ExecCGI  
</Directory>  
ScriptAlias "/php_dir/" "C:/GPL/PHP/"  
Action application/x-httpd-php "/php_dir/php-cgi.exe"


В файле httpd.conf были описаны свойства корневой папки следующим образом:
Код
<Directory />
    Options FollowSymLinks Includes Indexes
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

Т.е. на все папки (на все подпапки корневой папки) по умолчанию был установлен запрет
доступа для всех ip-ников. Этот запрет по умолчнию распространялся на все папки, описанные
в httpd.conf , включая C:/GPL/PHP.
Поэтому, необходимо было установить разрешение Allow from all либо в описании корневой папки, либо в описании папки C:/GPL/PHP.

Цитата

Странно, почему здесь фрагмент /php_dir/ не заменён на C:/GPL/PHP/...

А замена фрагменов по ScriptAlias'у, судя по всему, происходит после получения доступа к папке, поэтому в сообщении об ошибке указан /php_dir/, а не C:/GPL/PHP/

Автор: Nigel 20.9.2008, 18:38
Пока писал, проблема уж решилась smile 

Автор: CyraxZ 20.9.2008, 18:42
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)