• 締切済み

クライアントからサーバーに移行しエラー

PHP+MYSQLにて作業をしております。 PC1台にMYSQL+PHPをインストールし作業していたのですが、 今回、レンタルサーバーにファイルを移し作業をすることになりました。 すると、クライアント時には問題なく動いていた処理がエラーになるようになりました。 $sql = mysql_connect('localhost', '*****', '*****'); 上記のようなmysqlとの接続でエラーが出るのはMYSQLがサーバー側に変わったので 理解できるのですが、 fwrite( $fp, $string, strlen($string)); // ファイルへの書き込み 等のファイル処理関数がエラーになったり、SQL文の $sql = 'SELECT 日時,始値,高値,安値,終値 FROM dol_days ORDER BY 日時 DESC LIMIT 0 , 22'; がエラーになったり、プログラムとMYSQLの文字コードをUTF8で揃えているのに 文字化けしてしまうなど、その他結構な量のエラーがでます。 ちなみにSQL文に関して $conn = mysql_query('SELECT * FROM dol_days');は 問題なくとおったので恐らくMYSQLへの接続には問題ないように思います。 クライアントからサーバーに移行する際に直しておかないといけないことなど なにか原因がわかる方がいらっしゃいましたらご教授お願いします。 バージョン  PHP5 MYSQL: 5.0.33

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

もしかして、もとがWindowsだったのがレンタルサーバーでLinux系にかわりました? OSの特徴を理解した設計をしていますか? ファイルの書き込みなどはパーミッションの問題だと思いますが・・・ 文字化けについては $sql = "SET NAMES utf8"; など、基本的な対処方法はためしていますか? テーブルの照合順序もutf8_general_ciを指定してありますか?

hskwtkys
質問者

お礼

回答ありがとうございます!! サーバーのOSを確かめてみるとVine Linux 3.2/4.2でした 恥ずかしながらサーバーOSのことは全く考慮していなかったです。。 WindowsからLinuxはどのような対処が必要なのでしょうか? パーミッションはレンタルサーバーのマニュアルで644にしておけば 問題ないというような内容が書いてあったので644にしていたのですが 、やはりここに問題がありそうなので調べてみます。 文字化けはSQLで出力しているデータは問題なく表示されるのですが あるページのHTMLで記述している部分のみ文字化けしている状態です。 ちなみにMETAでコードは指定してあります。 まだまだ初心者でわからないことばかりなのですが、 ヒントなどありましたら宜しくお願いします。

関連するQ&A

  • PHP+MySQL on さくらサーバー

    さくらサーバーで、プレミアムプランで契約しています。 PHP4.3.10、MySQL 4.0.26で、以下のPHPファイルを埋め込んだphpファイルを実行すると、エラーが生じます。なんか、初歩的なことを勘違いしているのではないかと言う気がするのですが、何が問題なのでしょうか。 データベースのユーザー名は、xxx パスワードは、yyy データベース名は、xxx(一つのみ割り当て) Userというテーブルがあります。 <?php $conn = mysql_connect("mysql11.db.sakura.ne.jp","xxx","yyy"); mysql_select_db("xxx", $conn); $sql = 'SELECT * from User'; mysql_query($sql, $conn)); ?>

    • ベストアンサー
    • MySQL
  • 以下のSQL文を実行したのですが、MySQL server has g

    以下のSQL文を実行したのですが、MySQL server has gone awayというエラーが発生してしまいます。 さまざまなサイトを確認したのですが間違いが分からないため質問をさせていただきました。 よろしくお願いします。 SELECT * FROM t1 WHERE f1 = ANY (SELECT f1 FROM t2 WHERE group = '1'); (SELECT f1 FROM t2 WHERE group = '1')では30件程度が該当し、t1は5万行前後です。 MySQL クライアントのバージョン: 5.1.22-rc

  • サーバをクライアントそして使うのは健全ではない?

    カテゴリーが適切でないかもしれませんが 個人的にサーバ立てました WindowXP/Apache/PHP/MySQL/TynyFTP を入れています このPCをインターネットを見たり、文書を作ったり 普通のクライアントとして利用したりします こうした使い方は本来やるべきではないのでしょうか と、いいますのは IEが実行できなかったり サーバでIEを実行すると、LANの中にある 他のPCがインターネットにつながらなくなったり 異常現象がおきます これは、 サーバをクライアントとして使うのが誤っている or 使うのはかまわないが サーバの設定がどこかで誤っている の どちらが可能性大でしょうか

  • Mysql+PHP+Apache/サーバークライアント環境での

    Mysql+PHP+ApacheでWebからデータベースを扱う勉強をはじめました。この3つを1台のPCにインストールして、Webサーバーをローカルに立てて動作確認をしてきました。これをサーバー/クライアント環境で行う場合のことでお尋ねします。 ★行いたいこと Webサーバーにデータ(HTML、PHP、データベース)を保存しておいて、クライアントからそのデータを操作して、Webページの開発を行いたい。 質問(1) Webサーバーにインストールするのは、Mysql+PHP+Apache、クライアントにインストールするのは、Mysqlでよろしいのか。 質問(2)クライアントのMysqlを起動して、サーバーのMysqlのデータを扱うという考え方でよいのか 質問(3)クライアントのMysql内のデータとサーバーのMysqlのデータの関係はどのようになるのか。 とてもお恥ずかしいですが、宜しくお願いします。

  • エラーの意味

    $con=mysql_connect(localhost,***,***); mysql_select_db("shopdb"); $passwd=mysql_real_escape_string($_POST['passwd']); $email=mysql_real_escape_string($_POST['email']); $name=mysql_real_escape_string($_POST['name']); $sql="select * from users where email={$email} and passwd={$passwd}"; $_SESSION['name']=$name; $rs=mysql_query($sql); if(mysql_num_rows($rs)>0){ $_session['login']=1; header("localhost:". "top.php"); exit; } を入力したら Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource が出てしまいました・・・ なんのエラーでしょうか?

    • ベストアンサー
    • PHP
  • PHPで作成したプログラムをレンタルサーバ上に置き、同じサーバ上にある

    PHPで作成したプログラムをレンタルサーバ上に置き、同じサーバ上にあるMySQLからデータを取り出して表示するプログラムを作成しています。 今回、それとは別に社内LAN上にMySQLサーバがあり、レンタルサーバ上のPHPから社内LAN上のMySQLサーバにアクセスしたいと思い、次のようにプログラムしました。 $CON = mysql_connect('localhost', "ユーザ名", "パスワード"); mysql_select_db("データベース名"); $SQL = "SELECT * FROM tablename"; $RST = mysql_query($SQL); $DMAX = mysql_num_rows($RST); mysql_free_result($RST); $CON = mysql_close($CON); しかし、「データベースに接続出来ませんでした」と表示されてしまいます。 社内LANのMySQLサーバ上にPHPプログラムを置いたときはこれでアクセスできるので、レンタルサーバからは[localhost]ではまずいのかなとは思うのですが、どうしたらいいのか見当がつきません。 そのMySQLサーバのあるパソコンのLAN上での名前は分かっていますが、ネットワークの知識に乏しいもので・・・ どなたかヒントだけでもお願いできないでしょうか。

    • 締切済み
    • PHP
  • 外部サーバでの処理について

    PHP + MySQL でデータベース検索結果を表示するシステムを作っています。 利用者側サーバには呼び出しスクリプトを置いて、 こちら側サーバには処理スクリプトを置くことにより 処理ノウハウの提供を防ぎたいのですがうまくいきません。 利用者側サーバでのスクリプト単体では問題なく動いているのですが、 こちら側のサーバで一部の処理を動かそうとすると (つまり利用者側から require 'http://hogehoge.jp/list.php'; しようとすると) 下記のようにエラーとなってしまうのです。 (ちなみにこちら側サーバ単体でも正常に動作します。) Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /パス/list.php on line 9 Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /パス/list.php on line 10 どちらのサーバも同じレンタルサーバ会社から借りており、PHP も MySQL も利用可能です。 他の部分ではエラーは出ないのですが、mysql_query() や mysql_fetch_row() などは 外部サーバでは使えないのでしょうか? //全登録件数を表示する処理 $sql_countall = "select number from ".$db_table; $result = mysql_query($sql_countall, $dbHandle ); while($temp = mysql_fetch_row($result)){ $datacount = $datacount +1; }

    • ベストアンサー
    • PHP
  • AJAXでGET出来ない(直接記載ならGET可)

    外部サーバー(192.168.1.5)から、データベース(192.168.1.6)の情報を取り出すことが可能なPHPを作っています。 問題点 $sqlのパスワードの部分を $sql = "SELECT * FROM usr WHERE `userId`=$userId_e AND `pw`='p3kchds243j5'"; というように、直接記載すれば問題なく外部サーバー(192.168.1.5)でデータベース(192.168.1.6)の情報をGETできますが、 $sql = "SELECT * FROM usr WHERE `userId`=$userId_e AND `pw`=$pwd_e";や $sql = "SELECT * FROM usr WHERE `userId`=$userId_e AND `pw`=$pwd2_e"; だと、なぜかGETすることができません。 同じ条件で指示しているはずなのですが、何が問題なのでしょうか? 尚、外部サーバーからのGET指示はnumber,userId,pwdでありここでの間違いはありません。 よろしくお願いいたします。 【データベース(192.168.1.6)のPHP】 <?php header('Access-Control-Allow-Origin: *'); require_once('/home/sql/login.php'); //外部サーバー(192.168.1.5)からGET送信されたデータを受け取る $number = $_GET['number']; $userId = $_GET['userId']; $pwd = $_GET['pwd']; $pwd2 = 'p3kchds243j5'; //GET送信されたデータをエスケープ $number_e = mysql_real_escape_string($number); $userId_e = mysql_real_escape_string($userId); $pwd_e = mysql_real_escape_string($pwd); $pwd2_e = mysql_real_escape_string($pwd2); mysql_set_charset('utf8'); $sql = "SELECT * FROM usr WHERE `userId`=$userId_e AND `pw`=$pwd_e"; $result = mysql_query($sql); if (mysql_num_rows($result) > 0){ while($row = mysql_fetch_object($result)){ $string11 .= $row->a1; $string12 .= $row->userId; $string13 .= $row->pw; $string14 .= $row->nickname; } }else{ $string = "No matches!"; } //GET送信されてきたデータの確認 if($number == 9999){ //渡すデータを配列で格納 $array_data = array(string11=>$string11, string12=>$string12, string13=>$string13, string14=>$string14); } //ヘッダーの設定 header('Content-type:application/json; charset=utf8'); //渡すデータ(配列)をJSON形式にデコードして出力 echo json_encode($array_data); ?>

  • PCC-S-02201エラー

    こんにちは。 現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLでコンパイルエラーが出てしまいます。エラー内容は 「PCC-S-02201, 記号"+"が見つかりました。」 SQLPlus上では問題なく検索されるのですが、うまくいきません。 何が問題なのでしょうか? EXEC SQL SELECT A_DAY FROM DB1 WHERE B_NUM = ((SELECT B_NUM FROM DB1 WHERE A_DAY = '20040722') + 1); B_NUMはNUMBER型です。

  • mysqlコマンドとPHPで同じSQLの結果が違う

    MySQL 5.5で、mysqlコマンドからSQLを流したときと、PHPから同じSQLを発行したときで結果が違うのです。 どうも日付のパースが関係しているようで、「2014-08-19」と書くとどちらも同じ結果になるのに、 「2014-8-19」と書くとPHPでは1行も返ってこなくなります。 再現例: ================== CREATE TABLE t (day date NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO t (day) VALUES ('2014-08-19'); SELECT * FROM t WHERE day = '2014-8-19'; +------------+ | day | +------------+ | 2014-08-19 | +------------+ 1 row in set (0.00 sec) ↑同じSELECTをPHPから発行すると1行も返ってこない。 ================== mysqldとmysqlは5.5.30。 phpinfo()のmysqlのセクションでは Client API version 5.5.30 と出ています。 show variablesで見るとdate_formatはどちらも%Y-%m-%dになっています。 他にどこを確認すればいいでしょうか?

専門家に質問してみよう