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"); //← ×:ファイル作成失敗

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

このQ&Aに関連する最新のQ&A

A 回答 (2件)

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

この回答への補足

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

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

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

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

補足日時:2009/05/15 03:35
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/10 23:27

FTPを使用されているということは、記述のPHPはApache等のWebサーバが実行しています。


Webサーバは基本的にオーナー、グループにも属さない(つまり、その他)ので、その他が "db_test" ファイルの作成および読み書きできる必要があります。

ですので、

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

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

として下さい。

この回答への補足

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

補足日時:2009/05/15 10:21
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/10 23:27

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング