ホームページ  >  記事  >  バックエンド開発  >  PHP開発環境を作成するときにDockerで発生した権限の問題を解決する方法

PHP開発環境を作成するときにDockerで発生した権限の問題を解決する方法

不言
不言オリジナル
2018-06-09 14:30:403033ブラウズ

この記事では主に、PHP 開発環境を作成するときに Docker で発生する権限の問題の解決策を紹介します。これには一定の参考値があり、必要に応じて詳細を学ぶことができます。

最近、会社の開発環境とテスト環境を docker 上で実行しています。開発とテストは基本的にコードをインストールしてこのアドレスにプルし、次にディレクトリをインストールしてミラー ディレクトリにマウントするためです。 : 私は docker-compose

# development.yml
version: '2'
services:
 php-fpm:
  image: jackluo/php-fpm:5.6.3
  restart: always
  volumes:
   - ./www:/var/www/html
   - ./data:/usr/local/var/log
  extra_hosts:
   - "cache.redis.com:192.168.9.111"
   - "192.168.9.111:192.168.9.111"  
 web:
  image: index.alauda.cn/library/nginx
  restart: always
  links:
   - php-fpm
  volumes:
   - ./config:/etc/nginx/conf.d
   - ./data:/var/log/nginx
  volumes_from:
   - php-fpm
  ports:
   - 80:80
  expose:
   - 80

#jackluo/php-fpm:5.6.3 を使用します。これは私自身のものです。具体的には、github に docker-library があります。

現在の会社の PHP フレームワークは、thinkphp を使用してキャッシュ ファイルとディレクトリを生成します。ユーザーは www-data です。前の解決策は、2 つのユーザーが一致していれば問題ありませんでした。したがって、すべて www-data である www-data ユーザーをローカルに作成しました。権限。実行時にホストによって生成された権限を見てみましょう。
はすべて 33 です。33 はどのユーザーですか? ? ? ? , docker
で権限を確認すると、マウントされている権限が 1000 で、php で生成された権限が www-data
になっていることがわかり、Web ページ

# にアクセスしました。 Web ページには書き込み権限がないことが表示されます。これは何を意味しますか?

実は、この問題は長い間私を悩ませてきました。私の一般的な解決策は、ランタイムに 777 のアクセス許可を直接与えることです。ただし、それが新しく生成された php ページの場合は、与えられたアクセス許可を実行する必要があります。毎回、本当に不満を感じています。最終的に http://stackoverflow.com/ で解決策を見つけました。公式の解決策は

FROM php:5.6-fpm
RUN usermod -u 1000 www-data

です。

##
RUN usermod -u 1000 www-data && usermod -G staff www-data

このようにして、php によって生成されたキャッシュによって生成されたアクセス許可は一貫したものになります

#問題は次のように解決されます

以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。


#

以上がPHP開発環境を作成するときにDockerで発生した権限の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。