我正在尝试实现一个按钮,当点击该按钮时,将把一个通用文件上传到谷歌驱动器。以下代码在我的本地机器上运行良好(使用谷歌的SDK进行本地开发),但当上传到谷歌应用程序引擎时,它无法通过slowtest.php中的require_one语句
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_one"行,则"success"将添加到网页的段落行中。然而,当它没有被注释掉时,单击按钮时不会发生任何事情。
页面上没有错误输出,但会向控制台输出500错误。
加载资源失败:服务器响应状态为500(内部服务器错误)
我在命令行上运行了相同的代码,它也能工作。如果有人有任何建议,我们将不胜感激。
这里有一篇关于让PHP API客户端使用App Engine的详细文章,据我所知,这仍然是准确和正确的。
我建议遵循这篇博客文章中的说明,如果仍然不起作用,请报告。
此外,绝对不要在app.yaml文件的api客户端目录中放置任何路径,如上所述。
好的,我发现了问题,而且很简单。我把googleapi php客户端库称为static_dir,但没有一个文件是静态的。
使用这个问题的代码有助于有效地解决这个问题:
-url:/google-api-php-client/(.?)/(.脚本:谷歌api php客户端/''3/''2/''1.php
编辑:请参阅下面IanGSY的评论。您根本不需要在app.yaml.