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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

9941閲覧

Error code 403について

gajae443

総合スコア14

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/02/25 00:34

以下のエラーが発生。
対処法を教えていただきたいです。

Error code: 403

Message: CGI script is not executable ('/cgi-bin/recommend.py').

Error code explanation: HTTPStatus.FORBIDDEN - Request forbidden -- authorization will not help.

以下もとになるrecommend.pyのコードです。

#!/usr/bin/env python

-- coding: utf-8 --

"""
推薦アルゴリズム構築部

文字化け回避

import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

html_body = """

<!DOCTYPE html> <html> </html>

"""

import cgi
import csv
import pandas as pd
import pickle
import numpy as np
import os

以前のデータを読み込む

df = pd.read_csv("recommend.csv")

form = cgi.FieldStorage()
userID = form.getvalue("id","processing") #UserIDを取得

始まりの画像

if userID != "processing":
num = "1"

画像のどちらを選んだか。Oなら1,Xなら2

select = form.getvalue("text","00")
if select[0] != "5":
select = form.getvalue("text2","00")
num = select[1:]
select= select[0]

最初は、一番左のカラムにuserID登録

if userID != "processing":
zeros = np.zeros(df.shape[1])
zeros = pd.Series(zeros, index=df.columns, name = df.shape[0])
df = df.append(zeros)
df["userID"][df.shape[0]-1] = userID

画像を選択した状態

else:
df.iloc[[df.shape[0]-1],[int(num)+1]] = select[0]
# 次に移す画像の番号
num = str(int(num) + 1)

dfを保存

df.to_csv("recommend.csv", index= False)

画像の枚数を数える

path = "photos"
l = os.listdir(path)
no_f = 0
for i in l:
item = i.split(".")
if item[1] == "jpg":
no_f +=1
elif item[1] == "JPG":
no_f +=1
if int(num) > no_f - 2:
num = str(no_f-1)

print("Content-Type: text/html\n")
print(html_body.format(num, userID, select))

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

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

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

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

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

guest

回答2

0

自己解決

単に、実行権限を取得するのができていないだけでした。。

ターミナルで以下のコマンド
cd cgi-bin
chmod 755 recommend.py
を入力したら、うまく動きました。
おさわがせしました。ご回答いただいた方ありがとうございました。

投稿2017/02/25 01:40

gajae443

総合スコア14

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

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

0

読み込むデータがWebで参照可能な(参照権限のある)パスに
ないのではないでしょうか?

配置パス、ならびに権限を確認してみてください。

投稿2017/02/25 01:27

sinmei99

総合スコア88

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問