2015-06-30 2 views
0

Я пишу небольшую программу в Free Pascal в Linux и подключаюсь к базе данных Firebird на том же сервере. Для тестирования я изначально написал консольное приложение с использованием компонентов TIBConnection в FP и успешно подключился к базе данных Firebird и перечислил записи из одной из таблиц.Подключение к Firebird на Linux из приложения CGI в Apache дает ошибку разрешений

Теперь я хочу сделать то же самое из приложения CGI под Apache. Пример приложения CGI с различными параметрами отображает различные результаты HTML через действия «WebBroker», как ожидалось.

Так что как предварительные тесты, подключение к Firebird, так и получение веб-приложения CGI работают. Окончательный тест состоит в том, чтобы объединить их, и в этом моя проблема.

Всякий раз, когда я запускаю тестовое приложение cgi и пытаюсь подключиться к базе данных Firebird, я получаю сообщение об ошибке «отказ в доступе». Я оставил имя пользователя, пароль и порт по умолчанию, проверил брандмауэр, переключился между «localhost» и «127.0.0.1» и несколькими другими вещами, включая установку разрешений на файл базы данных для чтения/записи по всему миру (для временное тестирование, конечно).

Я нашел много информации в Интернете о подключении к Firebird на Linux и большом количестве информации о написании приложений CGI, но очень мало, где он объединяет два объекта. Я уверен, что есть тонкая, но важная проблема безопасности или брандмауэра, но она ускользает от меня.

  • CentOS 6,6 64-бит на виртуальной машине
  • Firebird 2.1.7 64-битный
  • Lazarus 1.4.0 64-битный

Кто-нибудь есть какие-либо предложения о том, что я мог бы попробовать ?

+0

С помощью вашей консольной программы вы также подключаетесь к серверу? Firebird также имеет локальный режим, соединяющий файл базы данных с вашим пользователем, а не через сервер базы данных (и его пользователя). Возможно, файл базы данных недоступен для пользователя сервера Firebird (например, у пользователя нет прав на файл), в то время как у вашего собственного пользователя есть доступ. –

+0

Я не использую встроенный FB, поэтому верьте, что консольная программа подключается через сервер. Я установил группу файла базы данных как apache, пользователь, на котором работает приложение CGI, поэтому он должен иметь права на этот файл. –

+0

Локальное соединение! = Встроенное (хотя оно почти идентично). Однако, если вы подключаетесь через сервер Firebird, то не apache должен иметь доступ к файлам базы данных, но пользователь, на котором запущен сервер Firebird (как правило, firebird), должен иметь права на файлы базы данных. –

ответ

0

Я понял, как заставить его работать, читая решение до different problem. Не знаю, почему отключить брандмауэр не удалось (я должен был полностью удалить его) и не знаю, что SELinux еще (должен был установить его «разрешительный»), но мне нужно будет изучить эти два вопроса, чтобы жить сервер не останется уязвимым.