• ベストアンサー

sql.phpの作成

vi sql.phpで <? $con = pg_connect("dbname=ishihara"); if(!$con){ print "DBへの接続に失敗しました!\n"; exit; }else{ print "DBへの接続に成功しました!\n"; } ?> というスクリプトをつくって ブラウザでテストしたところ <? $con = pg_connect("dbname=ishihara"); if(!$con){ print "DB�吾��・膓���け�����障����!\n"; exit; }else{ print "DB�吾��・膓����������障����!\n"; } ?> という風に出てしまいます。 これってphpがインストール不完全なのでしょうか?

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

  • ベストアンサー
  • tomy06
  • ベストアンサー率25% (58/224)
回答No.3

phpのインストールがうまくいっていない&文字コードが違っているのだと思います。 LINUXで普通にインストールすると、標準文字コードがEUCになっていると思います。 しかし、Fedoraの場合、UTF-8が標準なので、php.iniを編集する必要があると思います # configureに--enable-mbstring付けてありますよね? # httpd.confは編集済みですか?

ModenaSpeed
質問者

お礼

fedoraがUCFー8でないと文字化けすることを知りませんでした。 php.iniをUCFー8にすべて書き換えたら ちゃんと表示されるようになりました。 ありがとうございました。

ModenaSpeed
質問者

補足

アドバイスありがとうございます。 文字コードEUCーJPに変更しました。 --enable-mbstringも付けてあります。 文字コードはEUCで保存し、EUCでブラウザへ出力という 設定でよろしいでしょうか? もしかして出力はSHIFTーJIS?

その他の回答 (5)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.6

日本語を使うときは、ちゃんとcharsetを指定しましょう。 私の場合は、httpd.confで指定をOFFにして、html側のmetaタグでcharsetを 指定する方法が好みです。 あなたのsql.phpで使用している日本語にあわせた指定をしてください。 (euc-jp utf-8 など) (httpd.conf) AddDefaultCharset OFF <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> <body> <?   $con = pg_connect("dbname=ishihara");   if(!$con){     print "DBへの接続に失敗しました!\n";     exit;   }else{     print "DBへの接続に成功しました!\n";   } ?> </body> </html> ブラウザ上には、以下のように表示されます。 (Postgresの設定をしていないので当然エラーがでますが) Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? in /usr/local/apache2/htdocs/test.php on line 7 DBへの接続に失敗しました!

ModenaSpeed
質問者

お礼

fedoraがUCFー8でないと文字化けすることを知りませんでした。 php.iniをUCFー8にすべて書き換えたら ちゃんと表示されるようになりました。 ありがとうございました。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.5

>phpが二つ入ってしまっているということで >不具合が生じているのでしょうか? PHPをソースからコンパイルした場合は、デフォルトで /usr/local/ 配下にインストールされますから、パッケージ版の PHPとはぶつかりません。 ソース版のPHPをコンパイルするときは、Apache2に含まれるapxsコマンドを 指定してください。 # ./configure --with-apxs2=/usr/local/apache2/bin/apxs # make # make install httpd.conf には以下の3行を追加して、Apache2を再起動してください。 「/usr/local/apache2/conf/httpd.conf」 LoadModule php4_module modules/libphp4.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps いきなり、postgresに接続する前に、簡単なスクリプトを実行して phpの動作確認をしましょう。 <? phpinfo(); ?> ブラウザで読み込んで、PHPの情報が表形式で表示できたら、とりあえず 動いています。

ModenaSpeed
質問者

補足

アドバイスありがとうございます。 <? phpinfo(); ?> は、テスト済みでちゃんと起動します。 <? print "<pre>"; print'whoami'; print "</pre> ?> もブラウザで確認すると whoami と出てしまいます。

  • liq
  • ベストアンサー率38% (228/595)
回答No.4

phpをソースからインストールされたのなら、インストール前にすでにパッケージでphpがインストールされていないことを確認されましたか? webサーバーはおそらくapacheで、apacheをインストール後phpをインストールされたと思いますがhttpd.confに Load Module php4_module libexec/libphp4.so というような行がありますか?

ModenaSpeed
質問者

補足

Load Module php4_module libexec/libphp4.so これは確認したのですが 入っています。 >phpをソースからインストールされたのなら、インストール前にすでにパッケージでphpがインストールされていないことを確認されましたか? phpが二つ入ってしまっているということで 不具合が生じているのでしょうか? 確認してみます。

noname#12943
noname#12943
回答No.2

こんばんは。 自分は↓ここをお気に入りに入れてます。 (まだまだPHP勉強中です)

参考URL:
http://wiz.syscon.co.jp/Lnxphp.html
ModenaSpeed
質問者

お礼

アドバイスありがとうございます。 道のりはまだまだ遠いようです。 仕事が手に付かないほど 熱中してやっています。 視力低下かもです。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

sql.phpが、PHPファイルとして認識されていませんね。 インストールが不完全なのか、設定が不完全なのかは、ちょっとこの情報では分かりかねますが、どちらかでしょう。

ModenaSpeed
質問者

補足

設定方法とかって詳しく載ってるHPってありますか?

関連するQ&A

  • PHPとPostgreSQLとの連携

    今、WindowsXPでPHPとPostgreSQLを連携 させたいのですがなかなか上手く行きません。 どなたか、分かる方がいれば宜しくお願いします。 環境 OS→Windows HomeEdition Apache→Apache HTTP Serber2.0.59 PHP→PHP4.4.4 PostgreSQL→PostgreSQL8.1.4 です。 PostgreSQLの中にtest_dbというデータベースをつくり setuzoku.phpから接続できるかどうかのif文を作り確認 していますが、何度やっても接続失敗と出ます。 <?php $con = pg_connect("user='postgres' dbname='test_db' password='grjtf'"); if (! $con) { print "接続失敗"; } else { print "接続成功"; } ?>

  • 連続で実行するには?

    下のように、PostgreSQL に接続して insert を実行するプログラムを書いたのですが、 これらの3つのinsert 文を一気に実行してしまいたい場合、どうすればよいのでしょうか? // insert $sql = "insert into area values (1,'中央区')"; $sql = "insert into area values (2,'東区'); $sql = "insert into area values (3,'西区'); //ここより本文です。 <?php // connect $db_con = pg_connect("","","fuk_gourmet"); if($db_con == false) {print "cannot connect"; exit;} // insert (これだと一つしか実行できない) $sql = "insert into area values (1,'中央区')"; // execute $rs = pg_exec($db_con, $sql); if($rs == false) {print "execute error"; exit;} pg_freeresult($rs); pg_close($db_con); ?>

    • ベストアンサー
    • PHP
  • PHP + Postgres エラーのハンドリング

    やまとです。 宜しくお願いします。 今、PHP3とPostgres7.2でプログラミングをしています。 ちなみにOSはRedhatLinux7.2です。 PHPから、pg_execでSQL文を実行したり、pg_connectでDBに接続した場合に起きる エラーのハンドリングをしたいのですが出来るのでしょうか? Perlからではやり方は分かったのですが、PHPでのやり方が分かりません。 **************** Perlでのやり方 $db = "testdb"; $conn = Pg::connectdb("$db"); if (PGRES_CONNECTION_OK ne $conn->status){ print "システムエラーです。管理者へお問い合わせください。"; $msg=$conn->errorMessage; print "$msg"; exit; } **************** ↑みたいな感じをPHPでやりたいのですが・・・ ご存知でしたら、ご教授お願いします。

    • ベストアンサー
    • PHP
  • チェックボックスの使用

    PostgreSQL+PHP初心者です。 DBから登録者一覧を抽出し、CheckBoxでチェックしたものだけ 修正をします。 DBから抽出し、テーブルを作成するところまでは出来ました。 その後CheckBoxのチェック済みだけを修正する場合はどうすればいいですか? ↓現在のソースです。 <html> <head> </head> <body> <FORM NAME="form1" action="insert.php" method="post"> <? $hostname="svibm01"; $con = pg_connect("host=$hostname dbname=testdb user=testuser password=testuser"); if(!$con) { print "データベースに接続できませんでした.\n"; exit; } $sql = "select * from name"; $rtn = pg_exec($con, $sql); if(!$rtn) { print "テーブルの検索に失敗しました.\n"; pg_close($con); exit; } $m = pg_numrows($rtn); $n = pg_numfields($rtn); print "<table border>\n"; print "<tr>\n"; print "<th> </th>"; $i = 0; while($i < $n) { print "<th>".pg_fieldname($rtn, $i)."</th>\n"; $i++; } print "</tr>\n"; $j = 0; while($j < $m) { $i = 0; print "<tr>\n"; print "<td align=center><input type=checkbox name=check".pg_result($rtn, $j, $i)." value=".pg_result($rtn, $j, $i)."></td>"; while($i < $n) { print "<td align=center>".pg_result($rtn, $j, $i)."</td>\n"; $i++; } print "</tr>\n"; $j++; } pg_close($con); print "</table>"; ?> <br> <br> <input type="submit" name="add" value="追加" /> <input type="submit" name="upd" value="変更" /> </FORM> </body> </html>

    • 締切済み
    • PHP
  • PHPとPostgreSQLがつながらない

    PHPとPostgreSQLの初心者です。PHPとPostgreSQLを 使ってプログラムを作ろうと思ってます。 開発はPC上で、PostgreとPHPサーバはLinuxマシンに あります。まず最初にPostgreのインストールですが、 Fedora Core5 に着いていたPotsgreSQL8.1.3を入れ ました。設定としては、 postgresql.confでは listen_address='localhost,192.168.1.3' としました。192.168.1.3はLinuxマシンのローカル アドレスです。 pg_hba.confではconnectionのところで host all all 192.168.1.3 255.255.255.0 tyust としました。その後 host all all 0.0.0.0 255.255.255.0 tyust とかいろいろ試してみました。 一方PHPの方はほとんど何も設定をしていません。と いうか設定方法がよくわかりません。 以上の環境で、簡単なPHPプログラムをPostgreにつなげないで実行したところ問題なく動きました。 20行くらいのPHPを書いてみましたが、特に問題はあ りませんでした。 PostgreSQLの方は、PCからSSHで入って、接続テスト 用のDBを作り、テーブルも3つ作って、データを数件 Insertしました。 いよいよPHPからDBにつなぐことになったのですが、 プログラム上では以下のように書きました。 <?php    print "こんにちは"; $conn = pg_connect ('host=192.168.1.3 port=5432 dbname=phptest user=postgres');    print "こんばんは"; if (!$conn) { print "PostgreSQLへの接続に失敗です"; exit(); } else ・ ・ して実行したところ、「こんにちは」は表示されま したが、「こんばんは」以下はは表示しませんで した。$conn の先には進んでいないようです。 当然ここに書いた以外にも設定を変えてみましたが、 つながりませんでした。よろしくお願いします。

    • 締切済み
    • PHP
  • データベースに接続できない

    postgresql-7.2.3.tar.gzインストール時には、下記内容でデータベースに接続できていました。 <?php $con = pg_connect("dbname='database_6' user='postgres' password='xxx'") if(!$con){ print "DB connection failed!!\n"; }else{ print "DB connection successful!!\n"; } ?> ところが、postgresql-8.0.26.tar.gzをインストールしたら、上記内容でデータベースに接続できなくなり、 Fatal error: Call to undefined function: pg_connect() in /usr/local/apache/htdocs/sql.php on line 2 というエラーメッセージが表示されます。 phpinfo();で確認もしましたが、ない感じです。Additiional Modulesのどこかを見れば、いいのでしょうか? pgsql.soは/usr/local/lib/php/extentions/pgsql.soにあります。/usr/local/lib/php.iniのextention_dir = ./を以下のように修正し、 extention_dir = /usr/local/lib/php/extentions extention=pgsql.so /usr/local/apache/bin/apachectl restart も実行しています。

  • phpでのsql文で変数を使う

    POSTで受け取った文字列を,テーブル名として新規テーブルを作成したいのですが,sql文発行の際の変数の記述方法がわかりません。 ネットや本に書いてある方法は一通りためしたのですが,失敗しましたとなります。 ご教授下さい。 php 5.2.3 apache2.2.4 mysql 5.0.45 <?php require_once("../dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASS); $selectdb = mysql_select_db($DBNAME, $con); $name = $_POST['name']; $sql = "create table $name ( qno int(3), qcontents text(500))"; $rst = mysql_query($sql,$con); if($rst){ echo $name . "を作成しました。"; }else{ echo "データベースの作成に失敗しました。"; } ?>

    • ベストアンサー
    • PHP
  • pg_connect関数

    すみません、質問させてください。 PostgreSQLでPHPの接続をしようと考えています。 Apache, PHP, PostgreSQLのインストールは終了 しています。 PHPのスクリプト内で、 if( !$pg_con=pg_connect("host=$hostname dbname=test user=nobody") ) { と記述して接続を試みているのですが、 Call to undefined function: pg_connect() ・・・ というエラーが出てしまいます。 どのように対処すればいいかアドバイスを下さい。 お願いいたします。

  • PHPでMySQLのDBに接続

    PHP,MySQLが使えるレンタルサーバーを借りているのですが, PHPでMySQLに接続し、php_dbを選択をするようにしたいのですが、 この時DBファイルはどこに置けばいいのでしょうか? 現在はMySQLの管理コマンド(?)とは別にpublic_htmlの中に PHPフォルダを作り、そこにDBファイルを入れています。 PHPのスクリプトは <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>練習</title> <meta http-equiv="content-language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head><body> <?php $con = mysql_connect(); if (!$con) { echo ("Error:MySQLに接続できませんでした。<br />"); } else { echo ("接続ID=$con<br>\n"); } $selectdb = mysql_select_db("php_db" ,$con); if (!$selectdb) { echo ("Error:データベースを選択できませんでした"); } else { echo ("データベースphp_dbを選択しました。"); } ?> </body></html> としています。 MySQLには接続ができるのですが、php_dbには接続ができません。 php_dbのおき場所を変えるのか、ファイルの指定が間違っているのか その他、どの要に変更をしたらよいのでしょうか? お願いします。 環境はレンタルサーバーがLINUXでPHPのバージョンなどはわからないんです・・・!! 開発がOSがW2kでFTPで転送してます。

    • ベストアンサー
    • PHP
  • php ログインフォーム作成

    サーバーはさくらインターネットのプレミアムプラン phpのバージョンは 5.2.12 データベースのバージョンはMySQL 5.1 です。 <?php //DB設定 $dbhost = 'mysql***.db.sakura.ne.jp'; $dbuser = 'test'; $dbpass = 'test'; $dbname = 'members'; $ok_flg = 0; $msg = ""; //DB接続 $link = mysql_connect($dbhost,$dbuser,$dbpass); //使用するDBを選択 $conn = mysql_select_db($dbname,$link); if (!$conn) { die('Connect Error (' . mysql_connect_errno() . ') ' . mysql_connect_error()); } if (count($_POST) != 0) { $sql = sprintf("SELECT * FROM member WHERE id=? AND password=?"); $result = mysql_query($sql); ---- この先がわかりません ---- ***************************************** ***************************************** ***************************************** ---- ここまでがわかりません ---- if ($count == 1) { $ok_flg = 1; } else { $msg = '<span style="color:#ff0000;">ユーザーIDまたはパスワードが違います。</span>'; } } if ($ok_flg == 0) { echo <<< EOL $msg <form method="post" action=""> ユーザーID: <input name="id" /> パスワード: <input name="password" type="password" /> <input type="submit" value="ログイン" /> </form> EOL; } else { session_start(); $_SESSION["login_flg"] = 1; header ("location: ./"); } // MySQLへの接続を閉じる mysql_close($link); ?> ********の場所で困っています。 この先はどのように記述したらよろしいでしょうか? お分かりの方がいらっしゃいましたらご教授いただければと思います。

    • ベストアンサー
    • PHP