
PDOのクラスライブラリを読み込むために
peclからPDOをインストールする必要があるが、インストールができない。エラーと表示される。php.iniをかなりいじり、phpinfoにもPDO,pdo_mysql,PDO_ODBC,pdo_pgsql,pdo_sqliteが表示されているのに、なぜか動かない。
■下記はコマンドプロンプト
>cd c:\ php
c:\php>pecl install pdo
downloading PDO-1.0.3.tgz ...
Starting to download PDO-1.0.3.tgz(52,613 bytes)
..............done:52,613bytes
12 source files,building
ERROR: The DSP PDO.dsp does not exist.
■動かしたいプログラムのコード(PHP辞典(山田祥寛著)から参照・引用)
<?php
require_once("C:\Program Files/Apache Group/Apache2/php_libs/Smarty/libs/Smarty.class.php");
$db=new PDO("sqlite:",dirname(__FILE__)."/sample.sqlite");
$rs=$db->query("SELECT * FROM books");
$o_smarty=new Smarty();
$o_smarty->caching=2;
$o_smarty->template_dir="./templates";
$o_smarty->compile_dir="./templates_c";
$o_smarty->cache_dir="./cache";
$o_smarty->assign("data".$rs->fetchAll(PDO::FETCH_ASSOC));
$o_smarty->display("foreach.tpl");
print ($o_Smarty->fetch("foreach.tpl"));
?>
■そして、そのコードがブラウザから表示するエラーメッセージ
Fatal error: Uncaught exception 'PDOException' with message 'safe_mode/open_basedir prohibits opening ' in C:\Program Files\Apache Group\Apache2\htdocs\dis.php:4 Stack trace: #0 C:\Program Files\Apache Group\Apache2\htdocs\dis.php(4): PDO->__construct('sqlite:', 'C:\Program File...') #1 {main} thrown in C:\Program Files\Apache Group\Apache2\htdocs\dis.php on line 4
下記のご回答をお願いします。
(1)コマンドプロンプトに表示されるエラーはどんな意味でしょうか。何がいけないとか物足りないことがありますでしょうか。
(2)そのコードのおかしいところがあったらご指摘をお願いします。
(3)コンパイルエラーメッセージを翻訳したのですが、ちょっと意味がわからないので、教えてください。
ご回答をよろしくお願いします。かなり困っています。
No.3ベストアンサー
- 回答日時:
うーん・・phpinfo()でのPDO_SQLiteの項はどうなっていますか?こちらでテストしているサーバでは
PDO Driver for SQLite 3.x enabled
PECL Module version 1.0.1 $Id: pdo_sqlite.c,v 1.10.2.6.2.2 2007/03/23 14:30:00 wez Exp $
SQLite Library 3.3.7
となっていますので(Unixサーバです)。Winサーバで試してみないと仕方ないですかねぇ。ちょっと環境作りしないといけないのですが(汗
この回答への補足
PDO Driver for SQLite 3.x
PECL Module version 1.0.1 $Id: pdo_sqlite.c,v 1.10.2.6.2.2 2007/03/23 14:30:00 wez Exp $
SQLite Library 3.3.17undefined
WindowsXP版です。うーん、同じですね。色々なサイトを見たのですが、やはりUNIXの方が分かりやすいかな。それにしてもSQLiteやらPECLやら、そういう言葉はあまり聞かないです。むしろPEARやSmartyの方が有名になるほど注目されていますし解説書が多く出回っていますし…。3日間も色々なサイトを調べてみて、近くの本屋へ何件廻ったのですが、結果はダメでした。
Shimixさん、ありがとうございました。私のために色々丁寧に対応していただいて、何のお礼を言えばいいのか分からないほど感謝しています。
No.2
- 回答日時:
引数の「"data".$rs->fetchAll(PDO::FETCH_ASSOC)」の第一引数と第二引数の間がカンマでなくピリオドに見えますけど、大丈夫ですか(実際のソースはカンマですか?)smarty->assignの引数なのでカンマ区切りで2つあるハズですけど・・。
#そもそも文字列("data")と配列($rs->fetchAll)だし(汗
この回答への補足
ご回答ありがとうございました。素早いご回答に感謝しています。とても嬉しいです。
>引数の「"data",$rs->fetchAll(PDO::FETCH_ASSOC)」の第一引数と第二引数の間がカンマでなくピリオドに見えますけど、大丈夫ですか(実際のソースはカンマですか?)
実際のソースは確かにカンマになっています。.(ピリオド)ではなく,(カンマ)です。それでもエラーになってしまいますが、もしかして、2行目のsample.sqliteのファイルは白紙なんでしょうか。10と11行のforeach.tplは、その辞書にサンプルコードが書いてあったので、それを参考にしてコードを入れています。
あえて追伸します。
色々調べてみたのですが、PECLでインストールするPDOライブラリが正しくインストールされていないのが問題だと思います。コマンドプロンプトで">pecl install PDO"と入力してもERRORになる。
他のサンプルファイルでもPDOがありませんとかエラーされるようですので、恐らくPECLが問題だと思います。それにしてもPECLに関する解説サイトがあまりにもなさすぎる。
お礼内容の項目を質問の追伸に使いさせていただいております。本当にご迷惑をおかけしまして、申し訳ございません。
No.1
- 回答日時:
phpのバージョンはいくつでしょうか?5.1以降なら、php.iniの書き替えだけで完了です。
phpinfoにも表示があるということなので、問題ないように思えますが・・。http://jp.php.net/manual/ja/ref.pdo.php
>$db=new PDO("sqlite:",dirname(__FILE__)."/sample.sqlite");
sqlite:とファイルパスの間にカンマがあるようですが??
$db=new PDO('sqlite:' . dirname(__FILE__) . '/sample.sqlite');
ただ、これは例示されたソースだと3行目なんですが、エラー行が4というのはちょっと気になります。何か(改行だけの行とかを)省略されましたか?
この回答への補足
ご回答ありがとうございました。
>ただ、これは例示されたソースだと3行目なんですが、エラー行が4というのはちょっと気になります。何か(改行だけの行とかを)省略されましたか?
この件につきましては、すみませんでした。実はこのコードの仕組みを知りたいため、グローバル変数をprint出力していました。それを"教えて!goo"に投稿する際、そのグローバル変数の行だけ削除してしまい、エラーについては訂正を忘れてしまいました。
エラー行が3行目は無事に解決されましたが、今回は11行になってしまいました。問題の行は
$o_smarty->assign("data".$rs->fetchAll(PDO::FETCH_ASSOC));
です。fetchAllあたりにオブジェクトが入っていないと言っていますが、それはどういうことでしょうか?単純にSQLiteのデータが入っていないということでしょうか?
■エラー構文
C:\Program Files\Apache Group\Apache2\htdocs\dis.php
Fatal error: Call to a member function fetchAll() on a non-object in C:\Program Files\Apache Group\Apache2\htdocs\dis.php on line 11
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エディタで記入したコードがブ...
-
smartyについて
-
PDOクラスを使いたいが、peclか...
-
Pear::QuickFormの代わりにな...
-
Subversionのリポジトリの削除
-
.phpと.incファイルの違いはな...
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
onedrive にexcelファイルをア...
-
PHPのif文でその処理を途中で抜...
-
環境変数をMakefile内で有効に...
-
メール送信
-
VBSの「MsgBox」について
-
PHPからPostgreSQLのダンプを実行
-
PHPからシェルコマンドの実行
-
php 完了画面の送信メールのコ...
-
クラスが使えない。
-
error_reporting(0);にも関わら...
-
PHPMailerのコードエラーが解決...
-
日本語のファイルが開けない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPMailerのサンプルコードのエ...
-
たまに$_REQUESTの値が消える
-
PHP認証がProxy越しだと通らな...
-
CodeIgniter/index.phpにアクセ...
-
ImageCreate関数が undefined f...
-
PEAR Mailの不具合について(...
-
marty3のvariableFilter
-
unexpected T_REQUIRE とは?
-
mb_language("Japanese");でエ...
-
smartyについて
-
PDOクラスを使いたいが、peclか...
-
php5のrename()は日本語をリネ...
-
PEAR::MailでPEAR.php?
-
エディタで記入したコードがブ...
-
require_onceについて
-
soapclient
-
PHP ハイパーリンクのエン...
-
PostgreSQLに接続できません(Wi...
-
csobjは削除しても平気??
-
pdflib /pdi の拡張関数が有効...
おすすめ情報