私はこのPHPスクリプトを持っています:
<?php
if($_GET["name"] != null && $_GET["name"] != ""){
$name = urlencode($_GET["name"]);
$name = htmlentities($name);
$title = urlencode($_GET["title"]);
$title = htmlentities($title);
$art = urlencode($_GET["art"]);
$art = htmlentities($art);
$output = array();
exec("python add.py $name $title $art",$output);
}
?>
add.py ファイルは次のとおりです。
import sys
import sqlite3
name = sys.argv[1]
title = sys.argv[2]
art = sys.argv[3]
tup = (name,title,art)
conn = sqlite3.connect('arts.db')
c = conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS arts(name,title,art)')
c.execute('INSERT INTO arts VALUES(?,?,?)',tup)
conn.commit()
conn.close()
ファイルを実行すると、現在のディレクトリに arts.db ファイルがありません。それだけでなく、あちこちに print ステートメントを追加してプログラムをデバッグすると、プログラムが実行されるまでconn = sqlite3.connect('arts.db')
実行され、ステートメントが実行される前に終了することに気付きました。
ターミナルでpythonエディターを使用したため(Ubuntuを使用)、プログラムにエラーはありません。このプログラムを正常に実行できましたが、PHPスクリプトからこれを実行すると発生しません。