【问题标题】:Google API PHP Client Library on GAEGAE 上的 Google API PHP 客户端库
【发布时间】:2013-11-30 04:39:34
【问题描述】:

我正在尝试实现一个按钮,单击该按钮会将通用文件上传到 Google 驱动器。以下代码在我的本地机器上运行良好(使用 Google 的本地开发 SDK),但是当上传到 Google App Engine 时,它​​无法通过 slowtest.php 中的 require_once 语句。这是我的代码:

HTML 文件:

<head>
    ...
    <script src="js/data.js"></script>
    ...
</head>

<body>
    <div class="container">

        <h2>Data Page</h2>
        <p>Press the button to upload a file.</p>

        <button onclick="upload()" style="margin-bottom: 5px;">Upload</button>

        <p>Return: <span id="uploadedFiles"></span></p>
    </div>
</body>

在这里调用upload():

function upload() {
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            document.getElementById("uploadedFiles").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "slowtest.php", true);
    xmlhttp.send();
}

最后是 php 文件:

<?php

require_once 'google-api-php-client/src/Google_Client.php';
echo 'success!';
?>

如果我删除“require_once”行,则“成功”会添加到网页上的段落行。但是,当它没有被注释掉时,单击按钮时什么也不会发生。

页面没有错误输出,但是向控制台输出了500错误。

加载资源失败:服务器响应状态为 500 (Internal Server Error) 

我已经在命令行上运行了相同的代码并且它可以工作。如果有人有任何建议,他们将不胜感激。

【问题讨论】:

  • 您的应用程序目录中是否确实有一个 google-api-php-client 目录,与您的 app.yaml 处于同一级别?
  • 感谢您的回复,伊恩。文件夹肯定在那里。我尝试将 google-api-php-client/src 库中的文件与其他所有内容一起移动到主文件夹中,因为在 googles 文件中,他们提到了以“contrib/afile.php”或“auth/anotherfile”的形式包含的内容.php' 等,并且可能找不到这些文件。不过仍然有同样的错误。

标签: php ajax google-app-engine


【解决方案1】:

有一篇详细的帖子here 介绍了让 PHP API 客户端与 App Engine 一起工作,据我所知,它仍然准确且工作正常。

我建议按照这篇博文中的说明进行操作,如果仍然无法正常工作,请报告。

另外,绝对不要在你的 app.yaml 文件中的 api 客户端目录中放置任何路径,如上所述。

【讨论】:

    【解决方案2】:

    好的,我找到了问题,而且很简单。我将 google-api-php-client 库称为 static_dir,而所有文件都不是静态的。

    使用this问题中的代码有助于有效地解决这个问题:

    - url: /google-api-php-client/(.?)/(.?)/(.*)
      脚本:google-api-php-client/\3/\2/\1.php

    编辑:请参阅下面 IanGSY 的评论。您根本不需要在 app.yaml 中提及 google-api-php-client 库。

    【讨论】:

    • 这可能有效,但不正确。您不需要将所有应用程序文件指定为处理程序,只需将您希望通过 url 直接访问的文件指定为处理程序。您的问题是将 google-api-php-client 目录指定为(静态)处理程序,修复只是从您的 app.yaml 中完全删除该条目,不需要像上面那样具有条目。
    猜你喜欢
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    相关资源
    最近更新 更多