質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

3回答

599閲覧

open_uri できない

kimurayu

総合スコア158

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/10/21 14:55

編集2017/10/23 05:43

ブラウザから http://hogehoge.com/hogehoge/index.rb を実行
open_uri を用いて'https://hogehoge.jp/hogehoge.cgi' からデータを受け取る
-> エラー

ruby

1http://hogehoge.com/hogehoge/index.rb 2 3#!/usr/local/bin/rbenv/shims/ruby 4puts "Content-type: text/html\n\n" # ヘッダ(データの情報)を出力 5puts # 仕切りとして、空行を出力 6 7cgi = 'https://hogehoge.jp/hogehoge.cgi' 8require 'open-uri' 9io = OpenURI.open_uri(cgi) 10puts io.read

以下の様なエラーログがありました。

/etc/httpd/logs/error_log [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/net/http.rb:906:in `rescue in block in connect' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] : [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] Failed to open TCP connection to hogehoge.jp:443 (Permission denied - connect(2) for "hogehoge.jp" port 443) [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] ( [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] Errno::EACCES [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] ) [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/net/http.rb:903:in `block in connect' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/timeout.rb:93:in `block in timeout' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/timeout.rb:103:in `timeout' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/net/http.rb:902:in `connect' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/net/http.rb:887:in `do_start' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/net/http.rb:876:in `start' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:323:in `open_http' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:741:in `buffer_open' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:212:in `block in open_loop' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:210:in `catch' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:210:in `open_loop' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:151:in `open_uri' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /var/www/html/hogehoge/index.rb:117:in `url' [Mon Oct 23 oo:oo:oo 2017] [error] [client ooo.oo.ooo.oo] \tfrom /var/www/html/hogehoge/index.rb:120:in `<main>'

ターミナルで hogehoge.com のサーバに接続して $ ruby index.rb を実行すると 問題なく取得できました。

$ ruby index.rb

何が原因でしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/10/21 23:23

「ターミナルから index.rb を実行すると 問題なく取得できました。 」というのは、hogehoge.comにログインした状態でと言うことでしょうか?それとも別のPC?
kimurayu

2017/10/22 02:15 編集

hogehoge.com にログインした状態で $ ruby index.rb で実行したら取得できました。
guest

回答3

0

自己解決

$ sudo gestsebool httpd_can_network_connect on

を設定したら動く様になりました。

投稿2017/10/25 05:50

kimurayu

総合スコア158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ファイアーウォールでふさがれているわけでは無さそうなので、SELinuxでApacheユーザーにconnectする権限が与えられていないとかでしょうか。
/var/log/audit/audit.logを確認してください。

投稿2017/10/22 02:27

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kimurayu

2017/10/22 04:20

audit.log の何を確認すれば良いですか。
otn

2017/10/22 08:59

エラーメッセージが出ていれば、SELinuxが原因かどうか分かります。
kimurayu

2017/10/23 04:51

type=USER_ERR msg=audit(oooooooooo.ooo:oooooo): user pid=26217 uid=0 auid=500 ses=2924 subj=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=PAM:bad_ident acct="?" exe="/usr/sbin/sshd" hostname=oooo.oooo.hogehoge.jp addr=ooo.oo.ooo.oo terminal=ssh res=failed' これがエラーでしょうか。
guest

0

権限の問題ではないでしょうか?
直接Rubyからは実行できるということなので、Webサーバーがいじる権限がないのかなと思ったのですが

投稿2017/10/22 02:12

kenny_sayama

総合スコア1036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kimurayu

2017/10/22 04:19

どこを直せば良いのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問