1

私はおそらく(うまくいけば?)私が頭を悩ませてきた単純な許可の問題を持っています。いくつかの新鮮な目が役立つことを願っています。

Centos6.2で実行しています。私はPythonを使用して、postgresqlデータベースに正常にアクセスして管理しています。

ただし、phpを介してこれらのPythonスクリプトを実行しようとすると、データベースへのアクセス中にエラーが発生します。

私のphp呼び出し:

        exec('python test_get_bcas.py 2>&1 1> /dev/null', $output);

そして私の結果(フォーマットを許してください);

  0 => 'Traceback (most recent call last):',
  1 => '  File "test_get_bcas.py", line 3, in <module>',
  2 => '    response = getBCAs()',
  3 => '  File "/var/www/html/proj/getBCAs.py", line 22, in getBCAs',
  4 => '    database = Database()',
  5 => '  File "/var/www/html/proj/databaseFunctions.py", line 32, in __init__',
  6 => '    self.connection = psycopg2.connect("dbname=bsr user=gbtc password=broadcast host=localhost port=5432")',
  7 => '  File "/usr/lib/python2.6/site-packages/psycopg2-2.4.5-py2.6-linux-x86_64.egg/psycopg2/__init__.py", line 179, in connect',
  8 => '    connection_factory=connection_factory, async=async)',
  9 => 'psycopg2.OperationalError: could not connect to server: Permission denied',
  10 => '   Is the server running on host "localhost" and accepting',
  11 => '   TCP/IP connections on port 5432?',
  12 => '',
  13 => 'Exception AttributeError: AttributeError("\'NoneType\' object has no attribute \'close\'",) in <bound method Database.__del__ of <databaseFunctions.Database instance at 0x7f0de346efc8>> ignored',

私のPythonコードは次のようになります:

self.connection = psycopg2.connect("dbname=proj user=user password=pw host=localhost port=5432")

問題は、httpdプロセスが実行されているユーザーにあると思います。しかし、私はファイルのパーミッションをいじり、sudoersファイルにrootユーザーとしてapacheを追加しようとしました。

誰かが私が欠けているものについて何か考えを持っていますか?

4

1 に答える 1

2

解決しました!変更する必要があるのは SELinux の設定、具体的には httpd_can_network_connect でした。

これを行う:

setsebool -P httpd_can_network_connect on

問題を修正しました。

于 2012-07-18T23:03:13.557 に答える