2016-01-06 76 views
2

我正在尝试使用Google App Engine进行开发。Google App Engine和PHP编写文件

我正在尝试将数据写入文本文件。

最初,我的PHP代码是这样的:

function putFile($nstr,$fn){ 

$filename = $fn; 
$file = fopen($filename, "w"); 




if($file == false) 
{ 
    echo ("Error in opening new file"); 
    exit(); 
} 
fwrite($file, $nstr); 
fclose($file); 

} 

我运行GAE启动,并参观了http://localhost:9080

有错误信息显示:

警告:本地文件系统是只读的, ,打开失败 警告:未能打开流:没有这样的文件或目录.... 在打开新文件时出错

在此之后,我改变了我的代码稍微看看如果我能解决我自己的问题...

新代码:

function putFile($nstr,$fn){ 

$filename = $fn; 

$file = fopen('gs://#default#/'.$filename, "w"); 

    if($file == false) 
    { 
    echo ("Error in opening new file"); 
    exit(); 
    } 
    fwrite($file, $nstr); 
    fclose($file); 

    } 

我再次运行该应用程序。没有显示任何错误消息。

但是我的文本文件没有变化。

我不明白我的错误。

  • 我写错了代码吗?
  • 这与文件权限有关吗?
  • 也许我不明白GAE在文件读写方面的工作原理?
+0

您的代码看起来正确。你究竟用什么来确定“文本文件”(实际上不是一个 - 它是Google云存储对象)并没有改变 - “gsutil cat gs://your-app-id.appspot.com/the_filename ',还有其他什么? –

回答

1

鉴于您从GAE启动器运行并访问http://localhost:9080/,我假设您在使用本地计算机上的开发服务器进行测试时遇到此错误。开发环境通过写入本地文件系统来模拟生产环境。

题为The php.ini File文章说,有关在本地开发环境PHP应用程序权限如下:

默认情况下PHP应用程序不能写入文件系统。

根据this response公共问题11729,这个功能是在版本在App Engine SDK的1.9.18增加,虽然在相关release notes没有提及。

设置google_app_engine.disable_readonly_filesystem1php.ini文件应该解除这种限制虽然只为您的开发环境。除此之外,问题可能是