Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向Google Cloud PHPMyAdmin服务器发送REST调用不工作?_Php_Android_Mysql_Google App Engine_Phpmyadmin - Fatal编程技术网

向Google Cloud PHPMyAdmin服务器发送REST调用不工作?

向Google Cloud PHPMyAdmin服务器发送REST调用不工作?,php,android,mysql,google-app-engine,phpmyadmin,Php,Android,Mysql,Google App Engine,Phpmyadmin,我已经成功地在googlecloud上部署了phpMyAdmin服务器。我在尝试写入phpMyAdmin中创建的数据库时遇到问题。我正在尝试创建一个基于Google发布的新的Firebase Cloud Messaging的通知服务 NotificationInstanceService.java public class NotificationInstanceService extends FirebaseInstanceIdService { private static fina

我已经成功地在
googlecloud
上部署了
phpMyAdmin
服务器。我在尝试写入phpMyAdmin中创建的数据库时遇到问题。我正在尝试创建一个基于Google发布的新的
Firebase Cloud Messaging
的通知服务

NotificationInstanceService.java

public class NotificationInstanceService extends FirebaseInstanceIdService {
    private static final String TAG = "NotificationInstance";

    @Override
    public void onTokenRefresh() {

        //Getting registration token
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();

        //Displaying token on logcat
        Log.d(TAG, "Refreshed token: " + refreshedToken);

        sendRegistrationToServer(refreshedToken);

    }

    private void sendRegistrationToServer(String token) {
        //You can implement this method to store the token on your server
        //Not required for current project
        OkHttpClient client = new OkHttpClient();
        //Create the request body
        RequestBody body = new FormBody.Builder().add("Token", token).build();
        //Know where to send the request to
        Request request = new Request.Builder().url("<db link>.appspot.com/fcm/register.php")
                .post(body)
                .build();
        //Create
        try {
            client.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
config.inc.php:

<?php 
$cfg['blowfish_secret'] = '<Secret>'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/*
 * Servers configuration
 */
$i = 0;

// Change this to use the project and instance that you've created.
$host = '/cloudsql/<app server url>:us-central1:<database name>-app-php';
$type = 'socket';

/*
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['socket'] = $host;
$cfg['Servers'][$i]['connect_type'] = $type;
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
/*
 * End of servers configuration
 */

/*
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

$cfg['PmaNoRelation_DisableWarning'] = true;
$cfg['ExecTimeLimit'] = 60;
$cfg['CheckConfigurationPermissions'] = false;
// [END all]
编辑:在浏览器中,转到.appspot.com/fcm/register.php时的文本

<?php
    if (isset($_POST["Token"])) {

           $_uv_Token=$_POST["Token"];
           $conn = mysqli_connect("<db link>.appspot.com","root","","fcm") or die("Error connecting");
           $q="INSERT INTO users (Token) VALUES ( '$_uv_Token') "
              ." ON DUPLICATE KEY UPDATE Token = '$_uv_Token';";

      mysqli_query($conn,$q) or die(mysqli_error($conn));
      mysqli_close($conn);
    }
 ?>
数组(11){[“pmaCookieVer”]=>string(1)“5”[“pma_lang”]=>string(2) “en”[“pma\U排序规则\U连接”]=>字符串(15)“utf8\U unicode\U ci” [“pma_控制台高度”]=>字符串(2)“92”[“SACSID”]=>字符串(355) 2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 WFVX22BV5D2PJDPQEN4M3D7yP3 Wdg“ [“pma_控制台_配置”]=>字符串(103) {“alwaysExpand”:false,“StartThistory”:false,“currentQuery”:true,“EnterExecutions”:false,“darkTheme”:false} [“pma_控制台_模式”]=>字符串(4)“显示”[“phpMyAdmin”]=>字符串(40) “cfd814e10982d138c7ed4a3ef510c454c0e5f9b9”[“pma_iv-1”]=>字符串(24) “bSPnJOOBe5x0iXPbbU5Nww==”[“pmaUser-1”]=>字符串(24) “oHSLKZ7q6eOaXJ475Q6tzw==”[“pmaPass-1”]=>字符串(24) “dwKZ9gQPCoe/Uk4sWS4s2g==”}

new register.php:

<?php
    if (isset($_REQUEST["Token"])) {

           $_uv_Token=$_REQUEST["Token"];
           $conn = mysqli_connect("/cloudsql/<Database ServerURL>","root","","FCM") or die("Error connecting");
           $q="INSERT INTO users (Token) VALUES ( '$_uv_Token') "
              ." ON DUPLICATE KEY UPDATE Token = '$_uv_Token';";
      var_dump(mysqli_query($conn,$q));
      mysqli_query($conn,$q) or die(mysqli_error($conn));
      mysqli_close($conn);
    } else {
        var_dump($_REQUEST);
    }
 ?>

我不知道你的问题到底是什么,不清楚。但是既然你问:
我有没有办法调试我的脚本是否真的进入了PHP代码?如何调试PHP代码?
以下是您的答案:

将php代码更改为:

<?php
    if (isset($_POST["Token"])) {

           $_uv_Token=$_POST["Token"];
           $conn = mysqli_connect("<db link>.appspot.com","root","","fcm") or die("Error connecting");
           $q="INSERT INTO users (`Token`) VALUES ( `{$_uv_Token}`) "
              ." ON DUPLICATE KEY UPDATE `Token` = `{$_uv_Token}`;";

      mysqli_query($conn,$q) or die(mysqli_error($conn));
      mysqli_close($conn);
    } else {
        echo "Token is not set!";
    }
?>

如果在
?>
之前向register.php文件添加一个
else{var\u dump($\u REQUEST);}
,您会得到任何输出吗?如果没有,请尝试将以
mysqli\u查询($conn,$q)
开头的行替换为
var\u转储(mysqli\u查询($conn,$q))
然后再试一次,只是为了另一个测试。@Hafenkranich那么这个文件被转储到哪里呢?我试着按照你的建议去做,但似乎不知道在哪里可以找到关于这个请求的更多信息。如果您呼叫
https://.appspot.com/fcm/register.php
在浏览器中,您应该在
else
中结束,因为您没有通过POST提供令牌。我会先检查它是否有效。2.如果可以,请将register.php中的所有
$\u POST
更改为
$\u REQUEST
,然后调用
https://.appspot.com/fcm/register.php?Token=123
。这应该要么向数据库发送一个新的假用户,要么打印出有用的调试输出。3.如果这起作用(数据库中的用户),php部分似乎起作用,问题就出在java脚本的某个地方。(请确保重置我建议更改以进行测试的所有内容)@user1871869如果在
$\u请求中未设置令牌
,那么这看起来是Java的问题,而不是PHP的问题。您可以发布一个指向
请求
类的javadoc(或其他文档)的链接吗?查询字符串参数可能需要与另一个链接函数连接,如
.get()
.query()
。如果您只想测试与DB部分(而不是Java查询构建部分)的连接,您应该能够将令牌硬编码到PHP文件中,或者在浏览器中手动提供令牌(或,或),然后查看返回的内容。
<?php
    if (isset($_REQUEST["Token"])) {

           $_uv_Token=$_REQUEST["Token"];
           $conn = mysqli_connect("/cloudsql/<Database ServerURL>","root","","FCM") or die("Error connecting");
           $q="INSERT INTO users (Token) VALUES ( '$_uv_Token') "
              ." ON DUPLICATE KEY UPDATE Token = '$_uv_Token';";
      var_dump(mysqli_query($conn,$q));
      mysqli_query($conn,$q) or die(mysqli_error($conn));
      mysqli_close($conn);
    } else {
        var_dump($_REQUEST);
    }
 ?>
    Request request = new Request.Builder().url("<Application Server>/fcm/register.php?Token=123")
            .post(body)
            .build();
<?php
    if (isset($_POST["Token"])) {

           $_uv_Token=$_POST["Token"];
           $conn = mysqli_connect("<db link>.appspot.com","root","","fcm") or die("Error connecting");
           $q="INSERT INTO users (`Token`) VALUES ( `{$_uv_Token}`) "
              ." ON DUPLICATE KEY UPDATE `Token` = `{$_uv_Token}`;";

      mysqli_query($conn,$q) or die(mysqli_error($conn));
      mysqli_close($conn);
    } else {
        echo "Token is not set!";
    }
?>
...
    try {
        Response response = client.newCall(request).execute();
    } catch (IOException e) {
        e.printStackTrace();
    }

    if (!response.isSuccessful()){
        Log.w(TAG, "Unexpected response"+response.toString());
    } else {
        Log.w(TAG, "response: "+response.body().string());
    }
...