• 締切済み

PHPがローカルだと正常なのに、アップすると一部だけ表示されない

PHP初心者です。 ローカルにApache、PHP5をインストールしています。 使用環境はWinXP、PHPエディタを使用して、EUC-JPでコーディングしています。 レンタルサーバは、XREAです。 掲示板のような物を作成してみました。 パスワードで管理画面に入り、新規投稿、更新、削除が可能なものです。 投稿内容は年、月、日、URL、タイトル、内容の6項目のみです。 この6項目は、formからPOSTで送信し、カンマ区切りでdatファイルに1行ずつ書き込んでいます。 このdatファイルを1行ずつ読み込み、カンマ区切りごとに配列に格納し、投稿内容一覧画面に出力しています。 ローカルでは問題なく動作するのですが、XREAのサーバにアップするとおかしくなります。 エラーは起こりませんが、件名に全角を入力した場合に出力されない(配列変数内容を出力しても表示されませんでした) 内容に全角で複数行入力した際に1行目のみ出力されない。1ぎょうのみ入力した際は、表示されない。 いずれも、全角の場合のみで、半角を入力すると問題なく出力される。 ちなみに、datファイルを確認するときちんと書き込みされています。 また、うまく出力されていない投稿内容の更新画面に移ると、textareaに配列変数の内容がきちんと出力されます。 なぜ、全角の場合のみ1行目だけが出力されないのでしょうか? 他のレンタルサーバでは、うまく動き、違う点はphp.iniの設定が可能で、ローカルの環境のiniをそのまま反映させていることです。 XREAでは、php.iniの設定が出来ないようでこの辺りが関係しているのでしょうか?それともパーミッションなどでしょうか? 現在は、PHPのパーミッションを755に、datファイルの757にしています。 よろしくお願い致します。

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

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

半角文字なら正常ということはエンコーディングの問題でしょうか。 mbstring関連の設定を明記すれば回答が得られるかと。 detect_order encoding_translation http_input internal_encoding http_output また、PHPコード内でini_set等していますか? input系の設定はPHPコードでは効きませんので。

sana0930
質問者

補足

mbstring関連は、あまり周知していなくて。 ソース内では特に設定はしていません。 反対に出力するHTMLのページを <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"/>にしています。 XREAのphp.iniがどこにあるのかわからないのですが、phpinfo()などで見ることが可能なのでしょうか? 可能だとすれば、root/に置いてやれば、見ることが出来ますか?

関連するQ&A

  • PHPでWindowsのローカルドライブに書き込みたい

    PHP初心者ですが、PHPのファイル操作で質問があります。 サーバー上にあるファイルをWindowsのクライアントのフォルダに保存したいのですが、サーバーの作業ディレクトリに保存されてしまいます。 以下のようなテストプログラムで実験しています。(エラー処理は省略) $server_file_data=file_get_contents('server.dat'); $local_file = 'd:\\temp\\local.dat'; $cfp = fopen($local_file, "wb"); fwrite($cfp,$server_file_data); fclose($cfp); このPHPを走らせるとサーバーのカレントフォルダ上に d:\temp\local.datが作成されます。 Windows用のパスまでがファイル名に入っちゃってます。 ローカルのドライブにPHPが書き込むという動作がセキュリティ上望ましくないことは理解していますが、ここでは技術的な解決策をどなたかご教授できるでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • #!/usr/local/bin/php

    XAMPPで自宅サーバー勉強中です、 レンタルサーバーの時はPHPファイルの1行目に #!/usr/local/bin/php と記入し拡張子をabc.cgiとしていました、 自宅サーバーの場合の1行目と拡張子はどのように 書くのですか、よろしくお願いします。

    • ベストアンサー
    • PHP
  • ローカルでPHPファイルが実行されません

    http://localhost/test.php <?php phpinfo(); ?> 見ると、タグがそのまま表示されてしまい、実行されません。 何を直せばローカルでも動くようになりますか? Win8.1 アパッチインストール済 サーバー上にアップしてみると、きちんと動作確認できます。 文字コードUTF-8 BOMなし ・・でもアップする前にローカルで確認したいんです。 php.ini ファイルがないのが原因でしょうか。 詳しい方、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • mb_strlenが ローカルでは正常なのに、サーバー上ではおかしい

    宜しくお願いします。 多分初歩的な質問になっていますが、 検索しても解決できなかったので・・・。 ウインドウズのローカルにて、utf8,PHP5.0 MySQLを使って、 ちょっとしたフォーム入力がメインのページを作りました。 完成し、レンタルサーバーへアップしたのですが、 ローカルではちゃんと動いてた、mb_strlen関数が、 サーバーへアップロード後、文字数を大幅に少なく見積もって値を返しているようです。 また、mb_strlenとは関係ないですが、 特定のページだけ、文字化けした値がデーターベースから返ってきているようです。 まず、mb_strlen の件で、ローカルとサーバーをどうやってあわせればいいのでしょうか? php.ini のどこかを見ればいいと思いますが・・・。

    • ベストアンサー
    • PHP
  • サーバーにアップすると文字化けする

    PHPで作成したWebサイトをブロバイダーのサーバーにアップして表示すると文字化けします。 ローカル環境では、php.iniの設定で、エンコードをUTF-8としていますが、「サーバー環境はWindowsサーバをベースとしており、WEBサーバはIIS(7.0)となるため、各サイトごとにphp.iniファイルを設定することはできない。 (サーバ内にアップロードされてもPHPから読ませることはできません。)」 とブロバイダに言われました。 どうしたらよいのでしょうか? ちなみに、ローカル側のエンコードをjisにすれば問題ないのかもしれませんが、いまいちphp.iniの設定に自身がないのです。 今の状態は以下の通りですが、どこをどう変更すればよいのでしょうか? よろしくお願いします。 **************************************************** default_charset = "UTF-8"       出力文字コード mbstring.internal_encoding = UTF-8  PHP内部の文字コード mbstring.http_input = auto       HTTP入力の文字コード mbstring.http_output = pass      HTTP出力の文字コード mbstring.encoding_translation = Off  HTTP入力の文字コードの自動変換 ****************************************************

    • ベストアンサー
    • PHP
  • ローカルにある .php が IE で表示できない

    PC を買い換えてからこうなりました。 WindwsXP HomeEdition SP2 で、IE は Ver.6 です。 自分のホームページを .php で作っていて、 .php がローカルにある状態で、IE でのページレイアウトを確認しようとします。 しかし、このファイルをどう処理するか、のようなメッセージ BOX が出てしまい、 「開く」「保存」「キャンセル」の選択となります。 そして「開く」を選択すると、Firefox が起動してそれで開いてしまうので、IE での表示確認ができません。 同じファイルでも、サーバにアップすれば IE で開いて表示する事ができます。 また、別の PC であればローカルでも IE で表示させる事ができます。 サーバにアップして表示確認すればまあいいのですが、 アップ前の仮状態なので、ローカルでチェックしながら、という作り方が出来ないのが面倒です。 どうしたらローカルの .php ファイルを IE で表示できるでしょうか。 (phpプログラムの動作確認ではありません。HTML や CSS の確認です) 他の PC では何も考えずに出来ていた事なので、対処方法がよくわからず; ・・初歩的な気はするのですが、アドバイスがあればお願いしたいです。

  • PHPとMySQLについて

    社内サーバーにWebアプリをUPし、 全てデータベース管理にするため、MySQLを使用しました。 参考書を見ながら作成したため、構文に間違いはありません。 参考書は「 はじめての人のためのかんたんPHP + MySQL入門」です。 この参考書の第8章にあるWEBアプリを忠実に再現しました。 しかし、フォームに情報を入力し、登録を押しても情報が反映されません。 以上と同じように、ぶっとびねっと(フリーレンタルサーバー)でもUPし、phpMyAdminでDBを構築しましたが、 これも同じく登録情報が反映されませんでした。 無論、phpMyAdminから直接CREATEし、HPに情報を反映させるのは可能です。 その際、日本語が???となってしまいましたが、その他は正常です。 一番の問題は、なぜHPから情報を入力し、それがDBへ反映されないのかです。 .htpccessやPHP.iniの設定と何か関係があるのでしょうか? 社内サーバーに.htaccessファイルは無いそうです。 となると、php.iniだと思います。 私は初心者のため、イマイチPHP.iniが良く分かりません。 ローカルにApacheなどを落とした場合は、C:Windowsの中にPHP.iniの設定をいじればいいと思いますが、 社内サーバーの場合、サーバー上のどこかにあるPHP.iniファイルの設定を変える必要があるのでしょうか? 以上、ごちゃごちゃしてて申し訳ありませんが、 お助け下さい。

    • ベストアンサー
    • PHP
  • php.iniを手に入れたい

    /usr/local/apache_shared/conf/php5/php.ini にファイルがあるようなのですが、レンタルサーバですので落とすことができません。5.2.3のバージョンなのですが、どこかで手に入れることができますでしょうか?

    • ベストアンサー
    • PHP
  • PHP CLIでのphp.iniのパスを設定したい

    CLIモードで読み込まれるphp.iniのデフォルト値(/usr/local/lib)を「php -c path/file」を使わず、インストール時のconfigureオプションなどで指定することは可能なのでしょうか? 環境 CentOS 6.0 PHP5.3.9 (変な場所にインストールされているのは、他の開発環境もあるので隔離するためです。) configure時オプション --prefix=/home/user/local/php --with-config-file-path=/home/user/local/php/lib/ ↑これで自動的に/home/user/local/php/lib/php.iniが読み込まれると思ったのですが $ /home/user/local/php/bin/php -v PHP 5.3.9 (cli) (built: Jan 17 2012 17:22:45) $ /home/user/local/php/bin/php -i Configuration File (php.ini) Path => /home/user/local/php/lib/ Loaded Configuration File => /usr/local/lib/php.ini  なぜかデフォルト(/usr/local/lib/php.ini)が読み込まれてしまう $ /home/user/local/php/bin/php -c /home/user/local/php/lib/php.ini -i Configuration File (php.ini) Path => /home/user/local/php/lib/ Loaded Configuration File => /home/user/local/php/lib/php.ini  cオプションで指定するともちろん問題なし ちなみにブラウザで見るとConfiguration File (php.ini) PathとLoaded Configuration Fileが等しくなっています。 apacheのhttpd.confに PHPIniDir "/home/user/local/php/lib/" を記載しているからだと思いますが。 www.sample.com/index.php Configuration File (php.ini) Path/home/user/local/php/lib/ Loaded Configuration File/home/user/local/php/lib/php.ini

    • ベストアンサー
    • PHP
  • php.iniについて

    php.iniについて よろしくお願いします。 【問題点】 upload_max_filesizeをデフォルトの2Mから8Mに変えたいがphp.iniファイルを変えても、 phpinfo();のコマンドで2Mのままで表示されてしまう。 【現状】 1.Loaded Configuration File「C:\Windows\php.ini」を変えたが反応がない。 2.サーバも再起動してみたが、変わらなかった。 3.他のローカルディスクC内の他の「php.ini」を消しても変化なし 4.全ての「php.ini」を消してもphpinfo()が動いた(全部消したのにどこのiniファイルを見てるんだろ?) お手上げ状態です・・・ ご助力の程、よろしくお願いいたします。