2017-06-15 22 views
0

私はSymfony2のでアプリケーションのビルドを持っています。 3つのドッカーコンテナ内のアプリケーションの実行:許可問題が

  • リバースプロキシとしてnginxの静的なコンテンツデータベース

のためのWebサーバ

  • Mysqlのよう
  • にApacheを提供するすべてのファイルは、ルートによって所有されており、 Apacheとnginxサーバーはユーザーwww-dataの下で実行されます。アプリケーションはうまく動作します。

    PHPコンボ(ホスト上のrootで実行)だけが新しい画像を作成し、サーバーに保存します。最初に、許可コード0755のdirを次のコードで作成します。

    @mkdir('path/..', 0755, true); 
    

    これらの権利は正しく設定されています。それは次のコードで、このディレクトリ内に画像を保存された:

    $image = new \Imagick('path/filename.jpg'); 
    
        $Width = $image->getImageWidth(); 
        $Height = $image->getImageHeight(); 
    
        if($Width > 1024 || $Height > 768) { 
         $image->resizeImage($imgWith, $imgHeight, \Imagick::FILTER_LANCZOS, 0.9); 
         $image->writeImage('path/new_filename.jpg'); 
        } 
    

    これらの画像は、アプリケーションで画像を読み取り/表示することができない0600したがって、ユーザWWWデータが格納されています。私が手動で権利を変更した場合:chmod -R 0755 dir画像が正しく表示されます。

    右premssionsに直接画像を保存する方法上の任意の提案?

  • +0

    rootユーザーの下でPHPを実行する場合、ファイルはrootユーザー用に作成されます。 mkdir権限は、フォルダにはアクセスできますが、ファイルにはアクセスできません。それらのファイルのchmodまたはユーザ名をwww-dataに変更する必要があります – hamboy75

    答えて

    0

    あなたがPHPのchmodコマンドに

    のchmod( 'パス/ new_filename.jpg'、0755)を使用することができます。

    ファイルの作成後ですか?

    +0

    これは、ありがとうございます。私はこの質問を投稿する前にこれを試してみましたが、うまくいきませんでした。唯一の発見されたジュスト私たちは、これらの間のファイルの移動アクションは、再び許可を失う。 – Tom