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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Python

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

Q&A

0回答

2000閲覧

XAMPPでサーバーサイドの処理をpythonファイルにさせたい

13K

総合スコア7

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Python

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

0グッド

0クリップ

投稿2020/02/09 13:54

編集2020/02/09 16:08

前提・実現したいこと

php上の2つのフォームに入力されたテキストを連結して、サーバー上のinput_lines.txtに書き込みたいです。

XAMPPのインストール時と異なるディレクトリ構造は、
C:/xampp/htdocsの直下にphpフォルダ、PycharmProjectsフォルダ、file_inputフォルダを設置
さらに深い層は以下のようになっています。
php/index.php
PycharmProjects/Web/merge.py
file_input/input_lines.txt

発生している問題・エラーメッセージ

サーバーサイド上のテキストファイルに文字列が書き込まれません。
index.php

<html> <head> <style type="text/css"> input.example1 { width: 45%; margin: 100 auto} input.example2 { width: 80%; margin: 0 auto} input.example3 { width: 250px; margin: 0 auto} select { width: 250px; }   textarea { width: 400px; height: 10em; } </style> </head> <body> <center> <h1>ファイルの作成</h1> <div style="display:inline-flex" > <h1>前半部</h1> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <h1>後半部</h1> </div> <form method="POST" action="PycharmProjects/Web/merge.py" accept-charset="UTF-8"> <div style="display:inline-flex" > <p><textarea name="first_msg" cols="80" rows="20" class="example1" ></textarea></p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <p><textarea name="sec_msg" cols="80" rows="20" class="example1"></textarea></p> </div> <p><input type="submit" value="結合してファイルを作る" class="example3"></p> </form> </html>

merge.py

# -*- coding:utf-8 -*- # !C:/Users/golf/AppData/Local/Programs/Python/Python37-32/python.exe import cgi import cgitb import io import sys import re #トレース出力を有効にする cgitb.enable() #utf-8に変換 sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8') sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8') print("Content-Type: text/html; charset=utf-8") print("") form = cgi.FieldStorage() file = open('C:/xampp/htdocs/file_input/input_lines.txt', 'w', encoding="utf_8_sig") form_input_list = [] for i in range(2): form_input_list.append([]) for key in form: if key =="first_msg": rule_value = form[key].value #\r\nが含まれていると、自動変換で\nが\r\nになるのでバイナリモードで開くと\r\r\nになる。 #なので\r\nを\nに置換 if "\r\n" in rule_value: form_input_list[0] = re.sub("\r\n", "\n", rule_value) else: form_input_list[0] = rule_value if key =="sec_msg": fact_value = form[key].value if "\r\n" in fact_value: form_input_list[1]=re.sub("\r\n","\n",fact_value) else: form_input_list[1]=fact_value print("form_input_list=", form_input_list) #input_lines.txtにform_input_listの要素を書き込む #書き込まれた結果は、 # form_input_list[0], form_input_list[1], form_input_list[2],... for i in range(len(form_input_list)): if i !=0: file.writelines(["\r\n"]) i_input = form_input_list[i] file.writelines(i_input) file.close()

試したこと

C:/xampp/cgi-bin/PycharmProjects/Web/merge.pyに設置してみましたが、
input_lines.txtに文字は書き込まれませんでした。

補足情報(FW/ツールのバージョンなど)

C:/xampp/apache/conf/httpd.conf
には、pythonファイルが使えるように、以下の内容を追記してあります。

AddHandler cgi-script .cgo .pl .asp .py
ScriptInterpreterSource Registry-Strict

<Directory "C:/xampp/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .pl .cgi .py
</Directory>

初心者なので、的外れな質問かもしれませんが、何卒よろしくお願いします。
また、python内で別の言語を扱うようなpythonファイルもXAMPP内で動かす方法についての情報もお教えいただけたらうれしいです。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問