GAE上的Google API PHP客户端库

时间:2013-11-30 04:39:35

标签: php ajax google-app-engine

我正在尝试实施一个按钮,点按该按钮会将通用文件上传到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'行,则会将'success'添加到网页上的段落行中。但是,如果没有注释掉,单击按钮时没有任何反应。

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

Failed to load resource: the server responded with a status of 500 (Internal Server Error) 

我在命令行上运行相同的代码并且它可以工作。如果有人有任何建议,他们将深表感谢。

2 个答案:

答案 0 :(得分:1)

好的,我发现了问题并且非常简单。我指的是google-api-php-client库作为static_dir,而没有一个文件是静态的。

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

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

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

答案 1 :(得分:1)

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

我建议按照此博客文章中的说明进行操作,如果仍然无效则报告回来。

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