我正在尝试实施一个按钮,点按该按钮会将通用文件上传到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)
我在命令行上运行相同的代码并且它可以工作。如果有人有任何建议,他们将深表感谢。
答案 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客户端目录中放置任何路径。