PHPでのSQLiteでの質問です。

下記のサンプルを作成しました。
sample.php(パーミッション777 所有者・グループは共にroot)
<?
$dsn = 'sqlite:/test.db.sqlite';
$pdo = new PDO($dsn);
?>
ブラウザから実行するとtest.db.sqliteは作成されませんが、コマンドラインから
/usr/bin/php /var/www/sample.php
と実行するとtest.db.sqliteが作成されます。
構文的には間違っていないと思うのですが、なぜブラウザからのアクセスでは作成されないのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/09/28 17:33:16
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:JULY No.1

回答回数966ベストアンサー獲得回数247

ポイント35pt

$dsn = 'sqlite:/test.db.sqlite';

普通、ウェブサーバのプログラムの実行ユーザ(例えば、CentOS だと apache)はルートディレクトリへの書込み権を持っていないとと思いますが...

PHP: SQLite (PDO) - Manual

id:quocard

回答ありがとうございます。

そう言えばそうでした。

作成場所を間違えてました。

修正して動くことを確認しました。

ありがとうございます。

2010/09/28 17:15:04
id:Galapagos No.2

回答回数963ベストアンサー獲得回数89

ポイント35pt

"/test.db.sqlite" はルートフォルダに作成されることになります。

ブラウザから実行する場合のPHPの権限(おそらくApacheユーザー権限)ではルートフォルダに書き込むことができないのではないでしょうか。


参考「Linuxのパーミッションを理解しよう

id:quocard

回答ありがとうございます。

確かにその通りでした。

修正することで正常に動くことを確認しました。

ありがとうございます。

2010/09/28 17:15:34
  • id:deflation
    質問者の方へ
    前の質問 http://q.hatena.ne.jp/1285579818 でせっかく良いコメントが付いたのにキャンセルするのは酷くありませんか。
    いずれにしても私は回答拒否されているので、回答できません。
  • id:taknt
    環境変数の違いか?
  • id:rouge_2008
    通常、ルート「/」へのアクセス・書き込み権限は、httpdには与えていないと思いますから・・・



    > deflationさん

    良いコメントと言って頂いてありがとうございます。
  • id:quocard
    deflation さんへ
    回答自体がつかなかったので質問を消したかったのですが、質問自体がキャンセルになるとの認識がなく消えてしまいました。
    有益な情報をいただいておりましたが、消えてしまいましたこと、この場を借りてお詫び申し上げます。
    また私自身は回答拒否にdeflation さんを入れておりませんので回答はしていただけると思いますが、過去1ヶ月以内に回数以上の回答拒否をされている場合は回答が出来いようにデフォルトで設定されていますので、その際はご了承ください。

    tankt さんへ
    回答ありがとうございます。
    作成場所への権限の問題でした。
    作成場所を変更することで解決しました。

    rouge 2008さんへ
    まったくもってその通りです。
    作成場所を変更することで解決しました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません