こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

(PHP 4.4.8) sqlite_open関数の引数を相対パスにしたいのですが上手くいきません。

PHP 4.4.8
SQLite Library 2.8.14
の環境で、
sqlite_open関数の引数を相対パスにしたいのですが上手くいきません。

(例)create_db.php

<?php

$db = sqlite_open("../db_test"); //←ここでエラーが出ます。
$query = "CREATE TABLE tbl_test(id,aaa,bbb)";
$result = sqlite_query($db,$query);
sqlite_close($db);

?>

ネットで調べた所、sqlite_open()は引数に「相対パス(or絶対パス)」を入れることは可能であり、
かつ、「../db_test」が無い場合、作られる仕組みということです。

エラー表示:
Warning: sqlite_open() [function.sqlite-open]: unable to open database (...以下略)

ちなみに、上記のコードにおいて、
「../db_test」ではなく、「db_test」として同じことをすると、上手くいきます。
つまり、スクリプトファイル(create_db.php)と同階層にファイルを作成することはできるのです。

$db = sqlite_open("db_test");   //← ○:ファイル作成成功
$db = sqlite_open("../db_test"); //← ×:ファイル作成失敗

どなたかご助言をよろしくお願い致します。

投稿日時 - 2009-05-14 22:11:48

QNo.4959245

困ってます

質問者が選んだベストアンサー

PHPファイルが置いてある1つ上の階層(ディレクトリ)のパーミッションは確認しましたか?

投稿日時 - 2009-05-15 02:33:00

補足

まことにお恥ずかしい。
パーミッションを確認したつもりでしたが、どうも書き込めない設定になっていたようです。

パーミッションの設定を色々いじってみた所、書き込めるようになりました!

ただ、パーミッションをどう設定するのがベストなのか分からないので、もしよろしければ教えて頂けると大変助かります。

ちなみに、FTPソフト「FFFTP」にて、「属性の変更」でパーミッションを編集しています。
オーナー、グループ、その他 それぞれについて、
「呼出」「書込」「実行」の設定が可能です。
sqlite_open()で新たにファイルを作ることができるようにするには、
安全面も考え、どう設定したらよろしいでしょうか。
もし、分かりましたら、お教え下さい。
よろしくお願いします。

投稿日時 - 2009-05-15 03:35:27

お礼

ありがとうございました(^^)
また何かありましたら、教えて下さいね。

投稿日時 - 2009-07-10 23:27:32

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

FTPを使用されているということは、記述のPHPはApache等のWebサーバが実行しています。
Webサーバは基本的にオーナー、グループにも属さない(つまり、その他)ので、その他が "db_test" ファイルの作成および読み書きできる必要があります。

ですので、

["db_test"ファイルが置いてあるディレクトリ]
・パーミッション … 777
(オーナー、グループ、その他の全て、「呼出」「書込」「実行」可能)

["db_test"ファイル"]
・パーミッション … 666
(オーナー、グループ、その他の全て、「呼出」「書込」可能)

として下さい。

投稿日時 - 2009-05-15 08:08:54

補足

簡潔明瞭な回答をありがとうございました。
大変分かりやすく助かりました。
また質問することがありましたら、そのときもどうぞよろしくお願いします。(^^

投稿日時 - 2009-05-15 10:21:08

お礼

ありがとうございました(^^)
また何かありましたら、教えて下さいね。

投稿日時 - 2009-07-10 23:27:22

あなたにオススメの質問