質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1037閲覧

PHPのプログラムが全く動かない。他のは動いてるのに動かない理由がわからない。

luckbom

総合スコア1

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2022/07/19 16:28

前提

趣味でPHPプログラムで画像の掲示板を作ろうとしているのですが、そもそも動かなくて頭がパンクしてます。
ソースコードが原因なのか、他に原因があるのかわからず、ご助力お願いしたいです。

レンタルサーバーのスペースを借りてホームページを作っている。
いくつかのページは作成したけど、このプログラムだけ全く動かない。

またエラーがどの行で起こるか確認出来る方法があれば教えて欲しい。

実現したいこと

まずは動かしたい;;
エラーの起こった行数を把握できる方法がしりたい。

  • ▲▲機能を動作するようにする

発生している問題・エラーメッセージ

500エラー
try文から削除してもうごかない?

該当のソースコード

PHP

1<html> 2 <head> 3 <?php 4 5 //改行コードはLF(レンタルサーバーがLinux)文字コードはUTF-8で変換済み 6 //それ+おまじない↓ 7 header(“Content-type: text/html; charset=UTF-8); 8 mb_language(“Japanese”); 9 mb_internal_encoding(UTF-8); 10 //error_reporting(0); 11 12 try { 13 14 //connnect MySQL 15 //他のページは ↓ のドライバー設定で動く 16 $pdo = new PDO('mysql:host=localhost;dbname=foo;charset=utf8','bar','hoge', 17 array(PDO::ATTR_EMULATE_PREPARES => false)); 18 19 //new gazou insert 20 //画像の管理番号の最大値を取得して、+1して新たな管理番号を付与 21 //id(primaryキー)は、AUTO_INCREMENT属性の為行追加で自動付与 22 lf(true){ 23 $sth = $pdo -> query("select MAX(g_id) from gazou"); 24 $maxG_id = $sth -> fetch(PDO::FETCH_ASSOC); 25 } 26 27 }catch (PDOException $e) { 28 exit('(0)(0000)データベース接続失敗。'.$e->getMessage()); 29 } 30 ?> 31 </head> 32</html>

試したこと

他の動いてるページからコピペしたけど動かない。
逆に他のページにコピペしたが結局動かない。
文字コードに問題があると思い、テキストエディタでUTF-8でエンコードして、改行コードをLFに統一してから保存するが改善しない。
おまじないや、HTMLの<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />と言ったタグ表記もトライしたが改善しない。

補足情報(FW/ツールのバージョンなど)

サーバー:Apache
PHPのバージョン:php74
PHPのローカルパス:/usr/local/bin/php
php.ini はレンタルサーバー側が保持してて、変更出来ないか設定を上書きされる。

ソース書くのに使ったツール
Windows11
(基本)Notepad++
Visual Studio Code

Android
Jota+

※Xamppは設定方法がわからず、以前ハードディスクを外部から破壊された経緯があるので、本番環境に直でアップロード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AbeTakashi

2022/07/19 16:39

レンタルサーバでエラーログを参照する機能はないでしょうか? 500エラーはサーバ側のエラーログがないと原因がつかめないと思います。エラーログを見ても理由が分からない場合は、質問文にエラーログを追記してください。 エラーログを参照する機能がなければ、やはりローカルで開発を進めた方がいいでしょう。
luckbom

2022/07/19 17:38

PHPのバージョンを7.4から5.3に下げたら無事?エラーが表示されるようになりました。 Parse error: syntax error, unexpected '{' in /virtual/pokedon/public_html/modernkatze.com/zgazou1-1.php on line 67 レンタルサーバー名で解決法を探すという発想が欠如してました。 if文のパースエラーだったようです。 Cやアセンブラのノリでデバッグはbool値あてとけばとかなんかっていう勝手な解釈でした。 ここをなおしても再びエラーがでますが具体的にさぐれるのでこれからなら少し奨めそうです。 ありがとうございます~! エラーがみえるようになっただけでスッキリしました!
guest

回答2

0

ベストアンサー

とりあえず、引用符が全角です。
あとheaderはHTMLなど他の出力より前に使う必要があります。

PHP

1 header(“Content-type: text/html; charset=UTF-8); 2 mb_language(“Japanese”); 3 mb_internal_encoding(UTF-8);

投稿2022/07/19 16:50

kei344

総合スコア69430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2022/07/19 17:27

【PHP: header - Manual】 https://www.php.net/manual/ja/function.header.php > 覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。
luckbom

2022/07/19 17:53

引用符が大文字なのには気が付きませんでした!ありがとうございます。 引用符を修正し、<html<直下に移動し、別の方から修正依頼を頂いた方法でエラーは回避できるようになりました。 ただ、以下の警告が発生しました。 Warning: Cannot modify header information - headers already sent by (output started at /virtual/pokedon/public_html/modernkatze.com/zgazou1-1.php:3) in /virtual/pokedon/public_html/modernkatze.com/zgazou1-1.php on line 4 見た感じの直訳だと宣言の順序が違うよ。とも読めるのですが、どういう警告なのでしょうか?
otn

2022/07/19 23:27

それは、 > header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。 をやってないための警告(実質はエラー)です。 > <html<直下に移動し、 が間違ってますね。 > 、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。 です。
guest

0

そもそもの話、いきなりレンタルサーバではなく、ローカル環境に動作環境作られたほうが良いかと思います。
レンタルサーバでは権限含め様々な制約が設けられていたり、sshログイン可であってもLinuxコマンドによる操作が必要だったりで、実は完全初心者の状態では問題が起きたときの対応が難しかったりします。

また、環境を複数持つことで「同一コードでこちらは動くがあちらは動かない」のような問題切り分けもできるため、問題解決が相対的に早くなります。

投稿2022/07/19 22:15

m.ts10806

総合スコア80852

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

luckbom

2022/07/20 06:05

コメントありがとうございます。 ローカルでの環境を作らず直接本番に当ててる理由として、自分の知見の狭さと、以前のトラブルからローカルの環境作成をせず直接本番でプログラムを動かしています。 実際にローカルでxampp等でWindows環境下で実際に試して見たのですが、凄くやりづらかったです。 Xampp対応のIDEだとワークスペースからの作成が必要で、プログラム単体でテストしたいのに、レンタルサーバーに送るソースとは大分乖離してしまい、デバッグの量がかえって増えたためです。 またxamppでローカルでテストしてるはずが、テーブルが全て削除されていて、調べてみたら自分以外にイタリアからのIPアドレスでアクセスされた形跡があり、その数日後ハードディスクが破壊された苦い経験があります。 その時に、自分以外のIPアドレスを設定ファイルで遮断して、自分のIPアドレスのみ許可するという方法を覚えてれば良かったのですが、その手の知識を得たのはだいぶ後になってからです。 だったらVMで安全な設定にして別OS(Linux等)をインストールすればいいのではと思われるかもしれませんが、Linux系のOSはCUIもGUIも癖があって、Windowsみたいに突然シャットダウンしたりパラメータを間違えると全て最初からやり直しで敷居が高いです。 またレンタルサーバー側からはデータの受け渡しはFTPを使用するように言われてること、PHP5.x系じゃないと今回のようなトラブルがあったり(データベースのデータをインポート、エクスポート出来ない等)今選んでるレンタルサーバーの現状からも複雑な手順をおうべきでは無いと判断しました。あまりにも安いので文句は言えないです。 またこれらの情報を鑑みると比較的気軽なはずのPHPのラーニングコストがJava等より遥かに高くなって正直私のような初心者にはついていけないです・・・。その為、本来はいけない事とは思いますが、直接本番でのテストを行っています。 恐らく、ご自身の経験上、そちらを先に習得するべき情報だからアドバイスを頂けたのだと思いますが、申し訳ございませんが役に立てられる形には持っていけなさそうです。
m.ts10806

2022/07/20 07:34

結局サーバー側のことを理解せずにはものづくりができないのはかわらないですよ。 言語限らず。 外からアクセス云々はXAMPP関係無いです。
luckbom

2022/07/20 08:49

う~ん、そうすると弄ってるうちになんかやらかしたのか(;・∀・) 最初に書きましたが趣味の掲示板を作っていて趣味の範囲です。 動かす以上少しづつは、伝わりますが。 商品を扱うわけでなく、ただ掲示板が作りたいだけなので(最近書き込みが増えたので、現状のプログラムだと対応出来なくなったので最初から作り直してた)。 ものづくりというのはなにをさすのでしょう? もちろんPHPを動かすのにはapacheというサーバーソフトをなんかしらの環境にインストールして、apacheにPHPを翻訳してもらって、ユーザーからのデータの受け渡しを担ってもらう。という感じの理解じゃだめでしょうか? レンタルサーバーでシェル打ち込めって話は少なくとも聞いたことないです。 ホスティングとクラウドを混同されてないでしょうか? 環境がWindowsじゃまずい理由もわかりません。 PHPを使うならcakeないし、デザインパターンを必要としてセキュリティを上げる必要うんぬんまで発展されると理解の幅を超えます。JAVAやマイクロソフト系言語でなら多少は理解できますが。 おっしゃってるサーバー側の事というのがよくわかりません。
m.ts10806

2022/07/20 21:36

かなりぶっ飛んでる気がしますが、趣味ならなおさらローカルでしっかり学ぶべきでは。制限や制約の多いレンタルサーバではできることが少ないですし、既に出ているように問題が起きたときに調べるのも一苦労です。公開Webサーバ=本番という理解をされたほうが良いでしょう。公開されるので下手なものを出してしまえば、攻撃の的になったり、メール送信の仕組みを作った時にセキュリティ考慮出来てなければスパムメールの発射台になったり、レンタルサーバの運営もしくは同じ場所を使っているユーザに迷惑をかけることになります。(こちらの意図する「サーバ側のこと」の一部です) WindowsならXAMPP、MacならMAMPでまとまった環境がインストールできるわけですし、余程設定に手を入れたりモジュールが必要な要件でもなければ触ることはないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問