Задать вопрос

PHP как fastcgi выдаёт ошибку 403. Что делать?

Есть сервер с актуальным, регулярно обновляемым софтом. Возникла задача установить на него php5.3. Решено было оставить версию 5.5 модулем апача, а старую поставить как fastcgi. В итоге 5.5 по-прежнему работает, а 5.3 пишет в браузер, что
You don't have permission to access /php53-cgi/index.php on this server.
и выплёвывает в логи следующее:
[authz_core:error] [pid 17066] [client 127.0.0.1:57830] AH01630: client denied by server configuration: /usr/lib/cgi-bin/php53-cgi

Упомянутый файл содержит такие заклинания:
#!/bin/sh
PHPRC="/opt/php5.3/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php5.3/bin/php-cgi

Соответственно, в /opt/php5.3 как раз и установлена старая версия php.
Гугление пока ни к чему не привело. Однако, есть ощущение, что ошибка наверняка тривиальна.
  • Вопрос задан
  • 3604 просмотра
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
merryjane
@merryjane
Системный администратор
А что с правами на проблемный файл и каталог, где он лежит:
ls -l /usr/lib/cgi-bin/php53-cgi
ls -ld /usr/lib/cgi-bin/php53-cgi

Он ищет сайт в /php53-cgi, раз запрашивает /php53-cgi/index.php
От какого пользователя запускаете процесс:
ps aux| php-cgi

На мой взгляд, Вы пришли не к самому простому решению. Вот как можно сделать, чуть проще:
1. Скачать исходники нужной версии php.
2. Сконфигурировать ее с нужными ключами, например так:
./configure --prefix=/usr/local/php5.3.27 --with-curl '--with-gd' '--with-mcrypt' '--with-mysql' --with-libdir=lib64 '--with-mysqli' '--enable-mysqlnd' '--with-pdo-mysql' '--with-xmlrpc' '--with-pear' '--enable-zip' '--enable-soap' '--enable-sockets' '--enable-mbstring' '--with-jpeg-dir' '--with-png-dir' '--with-zlib-dir' '--with-freetype-dir' '--with-pcre-dir' '--enable-ftp' '--enable-exif' '--enable-calendar' '--enable-bcmath' '--with-zlib' '--with-config-file-path=/etc/php5.3.27' '--with-config-file-scan-dir=/etc/php5.3.27/conf.d' '--with-openssl' --with-apxs2=/usr/sbin/apxs --with-libxml-dir --with-bz2 --with-pcre-dir --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy --with-iconv-dir --with-pear

Важным здесь является:
--prefix - куда все поставится;
--with-config-file-path, --with-config-file-scan-dir - где мы будем держать конфиги для этой версии.
3. Собственно собрать через make, make install или checkinstall.

Подключить нужную версию php можно через .htaccess в корне нужного сайта через обписание хендлера, как-то так:
Action php-script /usr/local/php5.3.27/bin/php
AddHandler php-script .php
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
правильно соберите бинарник род fcgi. Вообще это довольно геморойная штука две и более версий пыха га одной железяке. копипасты с манкала в интернете не проканают. лучше наймите админа толкового он вам соберёт правильно. имеется ввиду ./configure
вот там нужно все правильно напачатаць.
Ответ написан
jakulov
@jakulov
Можно решать подобную проблему через chroot – гораздо проще получится все.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы