Разрешение отказано во время доступа к гипертабе в программе CGI
-
27-10-2019 - |
Вопрос
Я пытаюсь разработать веб -приложение в Perl, используя Гипертабельный. Анкет Образец кода:
#!/usr/bin/perl -w
use strict;
use warnings;
use CGI;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use CGI::Session ('-ip_match');
use Hypertable::ThriftClient;
use Data::Dumper;
my $q = new CGI;
print $q->header(-cache_control => "no-cache, no-store, must-revalidate");
eval {
my $client = new Hypertable::ThriftClient("localhost", 38080);
my $namespace = $client->open_namespace("glinpe");
my $result = $client->hql_exec($namespace, "select * from words where row=\"maths\" keys_only");
};
if ($@) {
if ($@->isa('Thrift::TException')) {
print Dumper($@);
} else {
print Dumper($@);
}
}
print "<h1>works</h1>";
Проблема в том, что при попытке выполнить из веб -браузера я получаю ошибку:
$VAR1 = bless( { 'code' => 0, 'message' => 'TSocket: Could not connect to localhost:38080 (Permission denied)' }, 'Thrift::TException' );
Сценарии работают должным образом при запуске с терминала (под пользователем Apache), а также в браузере, если удалить весь гипертабильный код.
У меня есть 38080 порт в iptables:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 38080 -j ACCEPT
ОС: CentOS 5.6.
Решение 2
ОК, поэтому есть два решения этой конкретной проблемы: 1. Отключить Selinux - изменить конфигурацию в/etc/selinux/config 2. Запустить команду:
setsebool -p httpd_can_network_connect 1
Спасибо предыдущему ответу за то, что вернули меня на правильный путь.
Другие советы
В сообщении об ошибке говорится, что вам не хватает разрешения, так что это будет ответом (пользовательский Apache, не имеет разрешения на создание сокета для Localhost: 38080)
Обновление: чтобы уточнить, когда вы запускаете его из терминала, оно работает как обычный пользователь, но когда Apache запускает его, чаще всего он работает в учетной записи Apache, который может не иметь разрешения открывать сокеты
Возможно, вы используете SELINUX, в этом случае см. «Человек Чон» или поиск «Учебное пособия SELINUX: настройка RHEL 5 и веб -серверы»