2016-01-06 91 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文件應該解除這種限制雖然只爲您的開發環境。除此之外,問題可能是