0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Phalcon Permission deniedで怒られた話

Posted at

Phalconがどうとか以前にPHPもあんまり分からんけど使う機会があって、
フロントからファイルを送信してバックで受け取るということをした時に、
なんか分からんエラーに見舞われたのでメモ。

input type="file"で選択したファイルを
こんな感じで送信

 $.ajax({
        url  : api_url,
        type : "POST",
        data : formdata,
        cache       : false,
        contentType : false,
        processData : false,
        enctype: 'multipart/form-data'
    })
    .done(fnc_done())
    .fail(fnc_fail());

Phalconの受け取り側
ドキュメント見ると

public function uploadAction()
{
  // Check if the user has uploaded files
  if ($this->request->hasFiles() == true) {
        // Print the real file names and their sizes
        foreach ($this->request->getUploadedFiles() as $file) {
            // $file
        }
    }
}

こんな感じで$fileにファイル入ってくるようなので、
はぇ〜と思いつつ、
moveTo関数で一時フォルダに置くんやで、みたいなことが書いてあるので
こんな感じにしてみて

$file->moveTo($file->getName());

fopenする必要があったので、

$fopenFile = fopen($file->getName(),'rb');

みたいにすると、普通に読み込めた。

解決や! と思ってたら、うまくいったのはローカル環境だけで、
それをAWS上で動かした時にうまく動かなかった。

move_uploaded_file failed to open stream: Permission denied

的なことで怒られる。

ファイル、ディレクトリの権限を確認しても変なところは無い。

なんでーと思いつつ

$fopenFile = fopen($file->getTempName(),'rb');

とmoveTo飛ばして一時ファイル直接開くみたいにしたら普通に動いた。

という話でした

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?