文件不是使用cakephp在heroku上创建的

时间:2014-08-20 13:20:16

标签: cakephp heroku

我尝试使用PHP代码在heroku上创建一个文件:

 $fh = fopen("../DownloadFiles/".$filename,'a');
fwrite($fh,$s);

但该文件尚未创建且未显示任何错误。请帮忙。

2 个答案:

答案 0 :(得分:0)

这应该可以正常工作,但是你知道如果你运行多个dynos,那个文件只会存在于服务于那个请求的dyno上,而不会存在于所有其他dyno上吗?

此外,Dynos每24小时重新启动一次,每次将更改推送到Heroku时都会重置其状态,因此您无法在其上存储持久信息;这被称为短暂的文件系统。

例如,您可以将上传的文件存储在Amazon S3上,如文档中所述:https://devcenter.heroku.com/articles/s3-upload-php

关于你原始问题的两个评论:

  1. 您可能正在运行旧版本的CakePHP,它会破坏所有内部PHP错误处理并将其写入日志文件(如果您很幸运),因此您无法在heroku logs中看到任何内容,并且不可能以其他方式配置它;升级到更新版本,该版本允许您登录到流,然后使用php://stderr作为目标
  2. 一般来说,如果你想用PHP写一个文件,你可以file_put_contents($filename, $contents) ...

答案 1 :(得分:-1)

部署中是否存在DownloadFiles文件夹?如果找不到目录,则节点fs会出错。您可以添加一个片段来检查dir是否存在,如果不存在则创建。您可以使用fs.exists和fs.mkdir。

了解更多信息http://nodejs.org/api/fs.html