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

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

ただいまの
回答率

90.42%

  • PHP

    21814questions

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

  • C#

    7972questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    4666questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • WebGL

    99questions

    WebGL(ウェブジーエル)は、ウェブブラウザで 3次元コンピュータグラフィックスを表示させるための標準仕様です。

さくらサーバーにFTPで配置したphpファイルにWebGLで作成したUnityアプリからアクセスしたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 115

zenobread

score 8

さくらサーバーにてファイル同士が参照できない

ProjectSettingsでWebアプリに変換したUnityよりアクセスしたいのですがエラーが出ており出来ないです。

具体的には
1、Unityアプリ側からPHPファイルにある値をPostする

2、受け取ったPHPファイルから更に別のPHPファイルに計算のためデータを送る

3、計算を終えたPHPファイルからUnityによりPostされたPHPファイルに送り返す

4、計算結果を受け取ったPHPファイルからUnityにデータを送る

なのですが1の段階でエラーメッセージとして
HTTP/1.1 500 Internal Server Error
が表示されています。

Unityやphp側に問題があるのかと思いxamppでサーバーを立てて行ってみましたが、特にエラーは起こらず
上記の1~4まで行うことが出来たので、さくらサーバーに問題があるのだと思いました。

FTPはWinSCPでさくらサーバーはスタンダードプランです。

前回の質問の際は奇術ミスという初歩的なミスを行っていたため今回も同じことがないよう確かめてみましたが
どうやらそういうこともないようです。またスタンダードプランだからできないのでは、ということも友人に確認したところそんなことはないはず、とだったので恐らく違うと考えました。

全く間違いと思われる部分に心当たりがないため開示すべき情報についてもどうかご教授お願いします。

追記1
以下に該当の見ていただきたいコードを載せます。
ただパスワードなどは*で隠しております。ご了承ください。

送受信する側のUNITYC#ファイル
localhostは実機では正しいアドレスを記入しています

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
public class PHPTEST : MonoBehaviour
{
    public Text ResultText_;
    public GameObject Drop_1;
    public GameObject Drop_2;
    Dropdown_1 drop;
    Dropdown_2 drop2;
    private string time;
    public int callory_time;
    private string ServerAddress = "http://localhost/php/API_req.php";
    // Use this for initialization
    void Start()
    {
        drop = Drop_1.GetComponent<Dropdown_1>();
        drop2 = Drop_2.GetComponent<Dropdown_2>();
    }
    public void SendSignal_Button_Push()
    {
        if(drop.rel==null||drop2.rel2==null){
          Debug.Log("値が入力されていません");
            ResultText_.GetComponent<Text>().text = "値が入力されていません";
          return;
        }
        StartCoroutine("Access");
        Debug.Log(drop.rel);
        Debug.Log(drop2.rel2);
    }

    private IEnumerator Access()
    {

        Dictionary<string, string> dic = new Dictionary<string, string>
        {
            { "id_1", drop.rel},
            { "id_2", drop2.rel2 }
        };
        Debug.Log(dic["id_1"]);
        Debug.Log(dic["id_2"]);
        StartCoroutine(Post(ServerAddress, dic));
        yield return 0;
    }

    private IEnumerator Post(string url, Dictionary<string, string> post)
    {
        WWWForm form = new WWWForm();
        foreach (KeyValuePair<string, string> post_arg in post)
        {
            form.AddField(post_arg.Key, post_arg.Value);
        }

        UnityWebRequest www = UnityWebRequest.Post(ServerAddress,form);

        www.timeout = 30;
        yield return www.SendWebRequest();

        if (www.error != null)
        {
            ResultText_.GetComponent<Text>().text = www.error;
            Debug.Log("HttpPost NG:" + www.error);
        }
        else if (www.isDone)
        {
            Debug.Log(www.downloadHandler.text);
            time = www.downloadHandler.text;
            ResultText_.GetComponent<Text>().text =time;
            callory_time = int.Parse(time);

            www=null;

        }
    }


    // Update is called once per frame
    void Update()
    {

    }
}

Unityからデータを受け取るphp

<?php
 require "API_prd_cp.php";
$url="http://s-proj.com/utils/checkHoliday.php?kind=h";
$holiday_check=file_get_contents($url);
$id_1=$_POST["id_1"];
$id_2=$_POST["id_2"];
$res=$id_1.$id_2;
 if($holiday_check=="holiday"){
   $holiday=1;
   $res=main($id_1,$id_2,$holiday);
 }else if($holiday_check=="else"){
   $holiday=0;
   $res=main($id_1,$id_2,$holiday);
 }

echo $res;

 ?>

phpからphpにデータを受け取りデータを返すphp
hostやパスにはphpmyadminにログインした時のものを使っております

function main($name,$name2,$hol){
      try{
        $db=new PDO('mysql:dbname=*;host=*;charset=utf8','*','*');
        if($hol==1){
          $result_from=$db->prepare("SELECT * FROM API_about WHERE TIME(station_time)>=NOW() AND station_name LIKE '%$name%' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Inner%' ORDER BY TIME(station_time) LIMIT 1");
          $result_from2=$db->prepare("SELECT * FROM API_about WHERE TIME(station_time)>=NOW() AND station_name LIKE'%$name%' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Inner%' ORDER BY TIME(station_time) LIMIT 1");
          $result_from->execute();
          $result_from2->execute();
          $result_from->setFetchMode(PDO::FETCH_ASSOC);
          $result_from2->setFetchMode(PDO::FETCH_ASSOC);
          $row_from=$result_from->fetch();
          $row_from2=$result_from2->fetch();
          $num=(string)$row_from['station_number'];
          $num2=(string)$row_from2['station_number'];
          $day=$row_from['day_sp'];
          $day2=$row_from2['day_sp'];

          $result_to=$db->prepare("SELECT*FROM API_about WHERE station_name LIKE '%$name2%' AND station_number='$num'  LIMIT 1 ");
          $result_to2=$db->prepare("SELECT*FROM API_about WHERE station_name LIKE '%$name2%' AND station_number='$num2'  LIMIT 1 ");
          $result_to->execute();
          $result_to2->execute();
  $result_to->setFetchMode(PDO::FETCH_ASSOC);
          $result_to2->setFetchMode(PDO::FETCH_ASSOC);
          $row_to=$result_to->fetch();
          $row_to2=$result_to2->fetch();

          $time_from=strtotime($row_from['station_time']);
          $time_from2=strtotime($row_from2['station_time']);
          $time_to=strtotime($row_to['station_time']);
          $time_to2=strtotime($row_to2['station_time']);

          if($time_from>$time_to){
            $time_cal_result=$time_from-$time_to;
          }else{
            $time_cal_result=$time_to-$time_from;
          }
          if($time_from2>$time_to2){
            $time_cal_result2=$time_from2-$time_to2;
          }else{
            $time_cal_result2=$time_to2-$time_from2;
          }


          if($time_cal_result==null||$time_cal_result2==null)echo "MISS4";

          if($time_cal_result>$time_cal_result2)
          {
            echo date("i",$time_cal_result2);
          }else{
            echo date("i",$time_cal_result);
          }
          //echo date("i",$time_cal_result)."Inner";
          //echo date("i",$time_cal_result2)."Outer";
        }else if($hol==0){
        $result_from=$db->prepare("SELECT * FROM API_about WHERE TIME(station_time)>=NOW() AND station_name LIKE '%$name%' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Inner%'  ORDER BY TIME(station_time) LIMIT 1");
        $result_from2=$db->prepare("SELECT * FROM API_about WHERE TIME(station_time)>=NOW() AND station_name LIKE'%$name%' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Outer%'  ORDER BY TIME(station_time) LIMIT 1");
        $result_from->execute();
        $result_from2->execute();
        $result_from->setFetchMode(PDO::FETCH_ASSOC);
        $result_from2->setFetchMode(PDO::FETCH_ASSOC);
        $row_from=$result_from->fetch();
        $row_from2=$result_from2->fetch();
        $num=(string)$row_from['station_number'];
        $num2=(string)$row_from2['station_number'];
        $day=$row_from['day_sp'];
        $day2=$row_from2['day_sp'];

        $result_to=$db->prepare("SELECT*FROM API_about WHERE station_name LIKE '%$name2%' AND station_number='$num' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Inner%' LIMIT 1 ");
        $result_to2=$db->prepare("SELECT*FROM API_about WHERE station_name LIKE '%$name2%' AND station_number='$num2' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Outer%'  LIMIT 1 ");
        $result_to->execute();
        $result_to2->execute();
        $result_to->setFetchMode(PDO::FETCH_ASSOC);
        $result_to2->setFetchMode(PDO::FETCH_ASSOC);
        $row_to=$result_to->fetch();
        $row_to2=$result_to2->fetch();

        /*echo $row_from['station_time'];
        echo "<br/>";
        echo $row_from2['station_time'];
        echo "<br/>";
        echo $row_to['station_time'];
        echo "<br/>";
        echo $row_to2['station_time'];
        echo "<br/>";*/

        $time_from=strtotime($row_from['station_time']);
        $time_from2=strtotime($row_from2['station_time']);
        $time_to=strtotime($row_to['station_time']);
        $time_to2=strtotime($row_to2['station_time']);

        /*echo $time_from;
        echo "<br/>";
        echo $time_from;
        echo "<br/>";
        echo $time_to;
        echo "<br/>";
        echo $time_to2;
        echo "<br/>";*/

        if($time_from>$time_to){
          $time_cal_result=$time_from-$time_to;
        }else{
          $time_cal_result=$time_to-$time_from;
        }
        if($time_from2>$time_to2){
          $time_cal_result2=$time_from2-$time_to2;
        }else{
          $time_cal_result2=$time_to2-$time_from2;
        }


        if($time_cal_result==null||$time_cal_result2==null)echo "MISS4";

        if($time_cal_result>$time_cal_result2)
        {
          echo date("i",$time_cal_result2);
        }else{
          echo date("i",$time_cal_result);
        }
        /*echo date("i",$time_cal_result)."Inner";
        echo date("i",$time_cal_result2)."Outer";*/
      }
        /*if($time_cal_result>$time_cal_result2){
          echo date("H:i",$time_cal_result2)."Inner".$row_to2['station_number'];
        }else{
          echo date("H:i",$time_cal_result)."Outer";
        }*/
        $db=null;
        }catch(PDOException $e){
          echo 'DB接続エラー:'.$e->getMessage();
        }
      }
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • asahina1979

    2019/01/11 17:31

    あっw LIKE'

    キャンセル

  • zenobread

    2019/01/11 17:56

    どういうことでしょうか?詳しくお願いします。

    キャンセル

  • m6u

    2019/01/11 18:36

    SQL文の中で変数を直に展開することを、SQLインジェクションといい、細工した文字列データを挿入する子でデータベースを破壊したりできるので、やってはならないことです。
    例えば「LIKE '%$name%'」とか。
    prepare()まで使っていて、bindParam()しないの、すっごく残念。

    キャンセル

回答 2

checkベストアンサー

0

さっぱり要領得ないけど、明らかにヤバそうな箇所のみ指摘。

        $result_from=$db->prepare("SELECT * FROM API_about WHERE TIME(station_time)>=NOW() AND station_name LIKE '%$name%' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Inner%'  ORDER BY TIME(station_time) LIMIT 1");
        $result_from2=$db->prepare("SELECT * FROM API_about WHERE TIME(station_time)>=NOW() AND station_name LIKE'%$name%' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Outer%'  ORDER BY TIME(station_time) LIMIT 1");


SQLインジェクションやめれ。

        $result_to=$db->prepare("SELECT*FROM API_about WHERE station_name LIKE '%$name2%' AND station_number='$num' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Inner%' LIMIT 1 ");
        $result_to2=$db->prepare("SELECT*FROM API_about WHERE station_name LIKE '%$name2%' AND station_number='$num2' AND day_sp LIKE '%SaturdayHoliday%' AND looping LIKE '%Outer%'  LIMIT 1 ");

ここもSQLインジェクションやめれ。
そして、上は$name2下も$name2でいいのかい?
そのくせ$num$num2ってなってるけど。

LIKE句の書き換え方については
PDO::prepareで部分一致(like %...%)させる時にエラーになる - Qiita
参照。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/13 21:11

    ありがとうございます。
    結果から言うとまた別なところが問題でしたが、参考になりました。

    キャンセル

  • 2019/01/13 21:24

    別なところが問題だったならそこがどこだったかを自己解決としてベストアンサーにしましょう

    キャンセル

0

レンタルサーバーでも管理画面からログが見えたかと思いますが、確認しましたか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/11 17:55

    遅れました。
    ログには特に何も表示がなく、エラーログもありませんでした。

    キャンセル

  • 2019/01/11 18:11

    古いですがこういう記事もあるのでどの関数が使えないかを地味に探すしかないかもしれません。
    https://www.textbox.jp/note/sakura-php56-ssl-error.html

    キャンセル

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

  • ただいまの回答率 90.42%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • PHP

    21814questions

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

  • C#

    7972questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    4666questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • WebGL

    99questions

    WebGL(ウェブジーエル)は、ウェブブラウザで 3次元コンピュータグラフィックスを表示させるための標準仕様です。

  • トップ
  • C#に関する質問
  • さくらサーバーにFTPで配置したphpファイルにWebGLで作成したUnityアプリからアクセスしたい