- 投稿日:2020-02-28T17:27:25+09:00
Laravelの外部キー制約でハマった話
はじめに
- Laravel初心者につき、お手柔らかに。
- 自分がハマってしまったので備忘録として。
- 「間違ってる!」、「○○したほうが良い!」みたいなことは教えてください。
ハマったこと
マイグレーションファイルを作成中のこと。外部制約キーを記述し、いざ
$ php artisan migrate
をすると、SQLSTATE[HY000]: General errorのエラーが。
参照元のテーブルや型の部分で間違いがあるのかと思い何度も確認したが間違いはなさそう。原因
結論から述べると、マイグレーションファイルの順番(作成の順番)がまずかったようです。
最初のマイグレーションファイルがこれ↓
issues
からcategories
を参照したかったのにこの順番になっていたので、マイグレーションの際にエラーが出ていたようです。コマンドから生成されるマイグレーションファイルは
YYYY_MM_DD_hhmiss_create_テーブル名s_table.php
のような名前になっているので頭の日付の部分をいじって順番を変えて上げると解決します。こんな感じ↓
前述したように、
issues
からcategories
を参照したいので、先にcategoriesをもってきます。
そうして$ php artisan migrate:refresh
をするとうまくいきました。まとめ
とても初歩的なところだと思いますが、Laravel初心者の僕は引っかかってしまったので参考までに。
アドバイス・ご指摘など有りましたらよろしくおねがいします!
- 投稿日:2020-02-28T16:48:55+09:00
初めてのWEBアプリ作成(1)
はじめに
初めまして、RHEMS技術研究室所属の白瀬です。
今回は初めてWEBアプリ作成としてTrello風ToDoリストを作成するまでの工程を投稿していこうと思います。間違った点がありましたらご指摘いただけると嬉しいです。
環境はmacのdocker,iTerms2を使用しています。コンテナ構築
nginx・PHP・MYSQLのコンテナの構築をdockerで行いました。!
今回はnginxとPHPの連携させずに作って行きます。
全体のディレクトリ
├── docker-compose.yml ├── nginx │ └── nginx.conf ├── php │ ├── Dockerfile │ └── php.ini ├── mysql │ └── data └── www └── html └── index.phpコマンド
docker-compose.yml
version: '3' services: nginx: image: nginx:latest ports: - 8080:80 volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf - ./www/html:/var/www/html depends_on: - php php: build: ./php volumes: - ./www/html:/var/www/html depends_on: - db db: image: mysql:5.7 ports: - 13306:3306 volumes: - ./mysql/data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: secretnginx.conf
server { listen 80; server_name _; root /var/www/html; index index.php index.html; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }Dockerfile
FROM php:7.2-fpm COPY php.ini /usr/local/etc/php/php.ini
date.timezone = "Asia/Tokyo"index.php
<h1>Hello WORLD</h1>すべて書き終えた後docker-compose.ymlがあるディレクトリまで移動し下記のコマンドを実行
docker-compose up -d実行し終えたらlocalホスト(http://localhost:8080/)に接続して画像のようになりました。
残りはこれをToDoリストように書き換えていくだけだと思っています。あとがき
自分がWEBアプリを作ってみてくれ言われ何をしたらいいか分からずdocker trello 作成などといった検索をかけていましたが的はずれなことをしていました。
誰でもはじめはわからないことばかりなので皆さんも人に聞きましょう。
自分は4日ほど悩んでました…
- 投稿日:2020-02-28T16:28:52+09:00
isset について
issetを使う機会が多かったのでメモを残しておきます。
issetとは
変数にnull以外の値がセットされているかどうか検証する。
まず、3つの変数を初期化しておく。
qiita.php$a = 'a'; $b = null; $c = ['aa'=>'a', 'bb'=>null];以下の状態でNoticeエラーが発生するのはどれか。
qiita.phpecho $a."\n"; //a echo $b."\n";//出力なし echo $d."\n";//Noticeエラー echo $c['aa']."\n";//a echo $c['bb']."\n";//出力なし echo $c['dd']."\n";//Noticeエラー変数d,c['dd']は初期化されていないので参照した瞬間にNoticeエラーになる。
以下の関数を定義
qiita.phpfunction echoBool($bl){ if($bl) echo 'YES'; else echo 'NO'; }isset()をechoBoolした結果
qiita.phpechoBool(isset($a)); //YES echoBool(isset($b)); //NO echoBool(isset($c)); //YES echoBool(isset($d); //NO * echoBool(isset($c['aa'])); //YES echoBool(isset($c['bb'])); //NO echoBool(isset($c['dd'])); //NO **の場合もNoticeエラーは発生しない。
issetの特性上、初期化していない変数を参照した時もNoticeエラーが発生しない。この特性を使って、問い合わせフォームなどのバリデーションチェック実装時などに、「初期化されているか分からない変数」の中身を参照したいときに利用する。
何かご指摘ありましたら遠慮なくコメント下さい。
- 投稿日:2020-02-28T13:26:31+09:00
WordPressが嫌で自作CMSに乗り換えたらいい感じになった、という話
今まで技術ブログをWordPressで運用していましたが、WordPressが嫌で自作CMSに乗り換えたら良い感じになったので、今回やったことを紹介します。
どんな自作CMSを作ったのか
自作CMSで一番やりたかったのは、Markdownでシンプルに記事投稿ができるようになること。
無駄なボタンやオプションを剥ぎ落として、とにかく記事執筆に専念できるようにしています。それとブログ部分については、WordPressではやれなかった色々な施策を行い、「PageSpeed Insights」で高スコアが出るようになりました。
(WordPress時のスコアをスクショしていなかった。。。)
実際に自作CMSで運用している「MooLog」を見ると分かりますが、気持ちよくページ遷移ができます。
WordPressで不満だったこと
もちろん、WordPressはユーザー数が多いこともあり、テーマやプラグインが豊富、レンタルサーバーでサポートされている等、WordPressを使う環境が揃っているのが魅力です。
ただ、WordPressで70点のブログを作るのは簡単にできるのですが、自分にとって90点、100点のブログ環境を作ろうとなると急にきつくなり、「別にWordPressである必要なくない?」となる欠点があります。
当初は自分でWordPressのプラグインやテーマを作ろうとしましたが、そのためにもWordPress独自のアーキテクチャだったりDB周りだったりを理解する必要があり、すごく面倒臭くなってしまいました。
どのように自作CMSを作ったのか
自作CMSで運用している環境は下記の通りです。
- PHP 7.2.28
- CodeIgniter 3.1.6
- MySQL 14.14
- Apache 2.4.6
- CentOS 7 (vultrというVPSで運用)
- git 1.8.3.1 (本番にリポジトリ作って自動デプロイ)
自作CMSは0から作るのではなく、CodeIgniter3というFWをベースに作りました。
CodeIgniterは最近流行のLaravelほどがっつりと機能を持ったFWではないですが、高速に動くのに定評があるFWです。
ただ、デフォルトだとunittestとmigration周りの機能が弱いので、以下のオープンソースを利用して、テストをしやすくしたり、cliでmigrationできるようにしました。
kenjis/ci-phpunit-test: An easier way to use PHPUnit with CodeIgniter 3.x.
kenjis/codeigniter-cli: Cli for CodeIgniter 3.0
フロントエンドは、
turbolinks
を使って高速化を測っており、他にもwebpack4でjsファイルを圧縮したり、css,jsファイルを1つにまとめてリクエスト数を減らしています。また、CMS部分ではjQueryをがっつり使っていますが、ブログ部分では素のJavaScriptで書いています。
自作CMSを運用してわかった欠点
とは言っても自作CMSにも欠点があり、当初は「Markdownが気持ちよく書ける、シンプルなCMS」を目指していたのに、いつの間にか「この機能も付けたそう」みたいなのが増えて、問題点とやるべきことがどんどん増えています。
例えば、「今月書く予定の記事TODOリスト」を作ろうとしたり、「テンプレート機能」を付け足そうとしたり、細かいバグの修正をしたり、結構時間が取られてしまいます。
今現在も修正を続けているのですが、徐々にWordPressっぽくなっており、「最初からWordPressで良かったのでは?」と思わなくもないです。
自作CMSを運用してわかったWordPressの良い点
自作CMSを運用して、改めてWordPressの偉大さを思い知らされました。(人間は何かを失った時に初めてその物の大切さに気づく、みたいな)
自作CMS+VPSで運用するとなると、基本的にCMSを自作する以外にもやることが多く、
- PHPとかMySQLとかインストールする
- サーバー周りのセキュリティの設定をする(fail2banとか)
- ドメイン周りの設定(sslとか)
- デプロイ周りの設定
- Apacheのパーミッションとか設定とか
などのように色々やらないといけません。一方、WordPress+レンタルサーバーだと、PHPで
Hello World
できなくてもボタン1つ押すだけで全部やってくれると言う凄まじい環境が揃っています。最近はWordPressをdisってる意見が挙がっており、逆に静的サイトageが多いですが、今回で色々勉強になりました。
まとめ
自作CMSはいいぞ
WordPressもいいぞ
- 投稿日:2020-02-28T11:30:07+09:00
laravel6のbladeファイル内で変数・配列を新規作成する。
bladeファイル内で変数・配列を新規作成する。
{{-- laravel6標準ではphpタグでしかできない。(blade構文を拡張して追加・作成する方法はある) --}} <?php $v[0]='hogehoge'; ?> {{-- 配列の場合は、値の確認もphpタグで --}} <?php dump( $v ); ?> {{-- 配列の場合下記ではエラーになる。恐らく後からblade内で追加した配列だからだと思われる。 --}} {{ dump( $v ) }} {{--しかし下記はエラーにならない --}} {{ dump( $v[0] ) }}参考情報
- Laravel5.4ではbladeファイル内で
{{--*/ $hoge = 'hoge' /*--}}
といった書き方で変数代入できない - Qiita- php - Bladeテンプレートで変数を設定したい - スタック・オーバーフロー
なぜ記事を書いたか
laravel6で配列をbladeで新規作成して確認する方法がまとまった記事が見つけられなかったから。
特に確認方法でハマりやすく入門時はできないと勘違いしていた。その他
laravel入門にはこの記事おすすめですよ!
Laravel 5.7で基本的なCRUDを作る - Qiita
laravel6でもほとんどそのまま動きました。
- 投稿日:2020-02-28T09:45:34+09:00
PHPの有名どころライブラリ群メモ
PHPの有名どころライブラリ群メモ
PSR実装
PSR-3 Logger
- monolog
- 最古のPSR-3実装。とりあえずこれを使っておけば問題ない
- Symfony2で採用された
PSR-7 Http Message
- laminas/laminas-diactoros
- 昔は zendframework/zend-diactoros だった
- guzzlehttp/psr7
- HTTPクライアントとしてguzzleを使う機会は多い
- slim/psr7
- nyholm/psr7
- relay/relay
PSR-11 Container Interface
- pimple/pimple
- 古くからあるコンテナ
- php-di/php-di
- laminas/laminas-servicemanager
- かつては zendframework/zend-servicemanager だったもの
- league/container
- aura/di
- illuminate/container
- LaravelのDIコンテナ
PSR-15 HTTP Handlers
PSR-17 HTTP Factories
PSR-7,15,17 + PSR-11(Container Interface) を使うアーキテクチャなら、FactoryInterfaceをDIすればPSR-7実装の影響範囲は設定箇所だけになる。
PSR-11を使わないアーキテクチャなら、PSR-7を自動判定(auto-discovery)してくれるライブラリを使うといい。
- PSR-17 HTTP-Factory with auto-discovery support
ルーティング
PSR-15(HTTP Handlers) 準拠でないもの
HTTP例外
例外だけ切り出したものは見つからなかった。
ちょっと巨大すぎるので、例外部分のみを参考にするくらいがいいかもしれない。
- symfony/http-kernel
Exception/*
- slim4
Slim/Exception/*
CLI
- symfony/console
- 定番
- pear/console_commandline
- とても古くからあるCLI引数のパーサ
よほどレガシなプロジェクトでない限り採用はなさそうDBAL + SQLビルダ
- doctorine/dbal
- もっとも有名といえる
- illuminate/database
- Laravelで採用されている
SQLビルダ
DBALにクエリビルダも付いていることが多いので、古きこれらのライブラリを今から使う価値はあまり無さそう
- Idiorm
- FluentPDO
- 開発終了?
ORM
- doctrine/orm
- もっとも有名といえる
- eloquent
- Laravelで採用されている
- cycle/orm
日付時刻
ユーティリティ
- cakephp/utility
- Hash が配列操作に便利
- rappasoft/laravel-helpers
- Laravel5 のヘルパ関数
- myclabs/php-enum
- phpでEnum(列挙型)を実現するライブラリ
デバッグ
- symfony/debug
- デバッグ画面
環境設定
- vlucas/phpdotenv
- phpで
.env
を扱うためのものテンプレートエンジン
- xiaoler/blade
- Laravelで採用されている
Blade
を単体で使うためのもの- phperには慣れ親しんだ構文で書けるのが特徴
- twig
- テンプレートエンジンはphpとは切り離されるべきという哲学
- smarty3
- 最古
- league/plates
- 生php + α という感じ
- phptal/phptal
- HTMLの属性に埋め込むという変わったアプローチ
framework
- Laravel6
- 一番hot
- Symfony5
- php界にコンポネント指向を広めた偉大なframework、Symfony2の後継
- 単体で使えるコンポネントもたくさんある
- 規約重視の哲学
- CakePHP3あたりから徐々にコンポネント指向になってきた
- php拡張でできているので高速
microframework
- Lumen
- Laravelのmicroframework版という位置づけ
- slim4
- symfony/flex
- Symfonyのmicroframework版という位置づけ
- 開発終了。以後はsymfony/flexを推奨されている。
- PSR-15(HTTP Handlers) 対応のmicroframework
- 昔は zendframework/zend-expressive だったもの
- PSR-7や15にいち早く対応してきた
- 投稿日:2020-02-28T06:02:32+09:00
LIMIT句を使用してページネーションに必要な件数分を取得する図
LIMIT 取得開始行, 取得件数;「取得開始行」は0から始まる数値を指定するため、仮に11〜15までの5件分を取得したい場合は以下のような指定になる。
LIMIT 10, 5;4ページ目のデータ行を7件分取得する場合のSQL
SELECT * FROM members LIMIT 21,7;仮にこの取得したパラメータ「4」から「21」を指定するための逆算を行う。
そのためには、過去のページ数に表示件数分を掛ける必要がある。// offsetとは基準値から差分を相殺した値のこと $offset = ($page - 1) * 7;これで各ページごとに、毎回必要な件数分のデータだけを取得することができるようになる。
- 投稿日:2020-02-28T01:06:07+09:00
【PHP】比較演算子「==」と「===」の違い
はじめに
業務でphpを使い始めてから4ヶ月目ですが、正直なんとなくの知識でコードを書いていたので、あやふやだった部分を学習し記事にすることで理解を深めていこうと思います。
「==」 と 「===」の違い
2つの値が等しいかどうか確認する場合、基本的には
「==」
ではなく「===」
を使いましょう、とネットのどの記事にも書いてありますがそれは一体なぜなのか??
ここで、整数型の1と文字列の1を比較して見ます。var_dump(1 == '1'); //bool(true) var_dump(1 === '1'); //bool(false)このような結果となります。
なぜ「==」
の方はtrueとなってしまうのか??
それは「==」
だと比較する際にphpが自動キャストを行うからです!自動キャスト
キャストというのはデータ型の変換を意味します。
phpは異なる型同士で演算を行う場合、自動キャストを行います。
特に文字列型はキャストがされやすい型で、「数値っぽい文字列」は数値型にキャストしてから比較を行います。1 == '1'
php「右側の文字列、数値っぽいなあ。せや、変換して比較したろ!」↓
1 == 1
php「一致しました^^」このようにphpがデータの型を勝手に変換してしまうためtrueとなってしまいます。
こういった自動キャストが発生することに気づかずプログラミングを進めてしまうと、予期せぬバグが発生してしまう可能性があります。「===」を使いましょう
以上のような自動キャストを発生させないためにも、厳密な比較をしてくれる
「===」
を使いましょう。
こちらを使えばphpの余計なお節介をされずにすみます。
今回はざっくりと自動キャストについて触れたため、自動キャストの詳しいルールなど気になった方は別途調べてみてください。おわりに
初投稿ということで記事を書くことに慣れていなく、読みづらかったら申し訳ないです。。
おかしなところなどございましたら遠慮なくコメントで指摘して頂けると嬉しいです。
よろしくお願い致します!
- 投稿日:2020-02-28T00:48:59+09:00
brew install php@7.4を実行した時にエラーが出た話
目的
- エラー解決の方法をまとめる
エラー概要
下記コマンドを実行後エラーが出力された。
$ brew install php@7.4エラー文を下記に記載する。
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun Error: The following formula [#<Dependency: "python" []>, #<Options: []>] cannot be installed as binary package and must be built from source. Install the Command Line Tools: xcode-select --installエラー文の和訳を下記に記載する。
xcrun:エラー:無効なアクティブな開発者パス(/ Library / Developer / CommandLineTools)、xcrunがありません:/ Library / Developer / CommandLineTools / usr / bin / xcrun エラー:次の式 [#<依存関係: "python" []>、#<オプション:[]>] バイナリパッケージとしてインストールすることはできず、ソースからビルドする必要があります。 コマンドラインツールをインストールします。 xcode-select --install ```原因
- xcrunと言うものがないことが原因らしい。
解決方法
下記コマンドを実行して必要な物をインストールする。
$ xcode-select --install下記のようなポップアップが表示されるので「インストール」をクリックする。
下記のウインドウが開いたら「同意する」をクリックする。
インストールが開始されるので少々待つ。
下記のウインドウが開いたらインストールが完了している。「完了」をクリックする。
今一度下記コマンドを実行する。(下記のエラーが出ればOK、すでにインストールされているという内容のエラーである。)
$ xcode-select --install >xcode-select: error: command line tools are already installed, use "Software Update" to install updates再度PHPをインストールするコマンドを実行する。
$ brew install php@7.4エラーコードは出なくなった。インストール時の出力を下記に記載する。
==> Installing dependencies for php: apr, apr-util, argon2, aspell, brotli, c-ares, libidn, libmetalink, libssh2, jansson, jemalloc, libev, libevent, nghttp2, openldap, rtmpdump, curl-openssl, libtool, unixodbc, freetds, libpng, freetype, libffi, pcre, gdbm, readline, sqlite, xz, python, glib, gmp, icu4c, jpeg, libpq, libsodium, libzip, oniguruma, tidy-html5, libtiff and webp ==> Installing php dependency: apr ==> Downloading https://homebrew.bintray.com/bottles/apr-1.7.0.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/27/277c42fcf2f5ca298a14279d1325f58da89ee4ec2132b3ccca9bf8dfdc354c48?__gda__=exp=1582818809~hmac=f2d3781a3f55ede73a8228a670fd4bb3 ######################################################################## 100.0% ==> Pouring apr-1.7.0.catalina.bottle.tar.gz ==> Caveats apr is keg-only, which means it was not symlinked into /usr/local, because Apple's CLT package contains apr. If you need to have apr first in your PATH run: echo 'export PATH="/usr/local/opt/apr/bin:$PATH"' >> ~/.bash_profile ==> Summary ? /usr/local/Cellar/apr/1.7.0: 59 files, 1.4MB ==> Installing php dependency: apr-util ==> Downloading https://homebrew.bintray.com/bottles/apr-util-1.6.1_3.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/42/425955a21c3fec8e78f365cd7fc4c6c4ec95d074f720a9b24e8237af90cc4dcc?__gda__=exp=1582818813~hmac=4d929232031855699c88b06a937ed7c1 ######################################################################## 100.0% ==> Pouring apr-util-1.6.1_3.catalina.bottle.tar.gz ==> Caveats apr-util is keg-only, which means it was not symlinked into /usr/local, because Apple's CLT package contains apr. If you need to have apr-util first in your PATH run: echo 'export PATH="/usr/local/opt/apr-util/bin:$PATH"' >> ~/.bash_profile ==> Summary ? /usr/local/Cellar/apr-util/1.6.1_3: 54 files, 785.7KB ==> Installing php dependency: argon2 ==> Downloading https://homebrew.bintray.com/bottles/argon2-20190702_1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/f8/f8e550c8597728bb9edc5a548497fd7b1219203932cd0f93ecc97a4fbf0bdad8?__gda__=exp=1582818817~hmac=4ee916b7082f81e1725d6316e61eab6c ######################################################################## 100.0% ==> Pouring argon2-20190702_1.catalina.bottle.tar.gz ? /usr/local/Cellar/argon2/20190702_1: 12 files, 599.2KB ==> Installing php dependency: aspell ==> Downloading https://homebrew.bintray.com/bottles/aspell-0.60.8.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/f3/f34a5b53fa80f6f0ea3cef83d04eceed93f918153463e0b77a596374a842249d?__gda__=exp=1582818821~hmac=7b4174d19afed7b3c48ca30adae637f8 ######################################################################## 100.0% ==> Pouring aspell-0.60.8.catalina.bottle.tar.gz ? /usr/local/Cellar/aspell/0.60.8: 767 files, 322.4MB ==> Installing php dependency: brotli ==> Downloading https://homebrew.bintray.com/bottles/brotli-1.0.7.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/81/81be7d1d110787a534cd57cc1ec6bb5032d81e3928d9103ce1e654560c6848ca?__gda__=exp=1582818842~hmac=298075c6a3cd2d1c760e0d8995bc45e7 ######################################################################## 100.0% ==> Pouring brotli-1.0.7.catalina.bottle.tar.gz ? /usr/local/Cellar/brotli/1.0.7: 25 files, 2.2MB ==> Installing php dependency: c-ares ==> Downloading https://homebrew.bintray.com/bottles/c-ares-1.15.0.catalina.bottle.tar.gz ######################################################################## 100.0% ==> Pouring c-ares-1.15.0.catalina.bottle.tar.gz ? /usr/local/Cellar/c-ares/1.15.0: 72 files, 487.1KB ==> Installing php dependency: libidn ==> Downloading https://homebrew.bintray.com/bottles/libidn-1.35.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/a7/a720f31e3d82a3e537ae2fbaf88bdfcf537b3452615a170c72714c111df4a661?__gda__=exp=1582818853~hmac=52687b3d0d6f43a4c1e222899d84f59a ######################################################################## 100.0% ==> Pouring libidn-1.35.catalina.bottle.tar.gz ==> Caveats Emacs Lisp files have been installed to: /usr/local/share/emacs/site-lisp/libidn ==> Summary ? /usr/local/Cellar/libidn/1.35: 72 files, 1.4MB ==> Installing php dependency: libmetalink ==> Downloading https://homebrew.bintray.com/bottles/libmetalink-0.1.3.catalina.bottle.tar.gz ######################################################################## 100.0% ==> Pouring libmetalink-0.1.3.catalina.bottle.tar.gz ? /usr/local/Cellar/libmetalink/0.1.3: 31 files, 182.9KB ==> Installing php dependency: libssh2 ==> Downloading https://homebrew.bintray.com/bottles/libssh2-1.9.0_1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/2c/2c4dcf8149663f9a133deac5bc42ce308d1ced90227cac391ca30b0ab2d381f9?__gda__=exp=1582818862~hmac=ab4aaaefec8fb67734e8b292b0ec9e82 ######################################################################## 100.0% ==> Pouring libssh2-1.9.0_1.catalina.bottle.tar.gz ? /usr/local/Cellar/libssh2/1.9.0_1: 184 files, 941KB ==> Installing php dependency: jansson ==> Downloading https://homebrew.bintray.com/bottles/jansson-2.12.catalina.bottle.tar.gz ######################################################################## 100.0% ==> Pouring jansson-2.12.catalina.bottle.tar.gz ? /usr/local/Cellar/jansson/2.12: 11 files, 162.9KB ==> Installing php dependency: jemalloc ==> Downloading https://homebrew.bintray.com/bottles/jemalloc-5.2.1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/13/13080a13f5e1a0699adaed5ba9906616850c2e8a75a829f8be6a2e6183fb16e5?__gda__=exp=1582818871~hmac=bd6b81c3263bfa3ec7984d9e0e0bfe1a ######################################################################## 100.0% ==> Pouring jemalloc-5.2.1.catalina.bottle.tar.gz ? /usr/local/Cellar/jemalloc/5.2.1: 16 files, 2MB ==> Installing php dependency: libev ==> Downloading https://homebrew.bintray.com/bottles/libev-4.31.catalina.bottle.tar.gz ######################################################################## 100.0% ==> Pouring libev-4.31.catalina.bottle.tar.gz ? /usr/local/Cellar/libev/4.31: 12 files, 451.3KB ==> Installing php dependency: libevent ==> Downloading https://homebrew.bintray.com/bottles/libevent-2.1.11_1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/9d/9d262f9ffb2268340a89c713826d8ca068bcac06c30baf49e6184ab4660d977a?__gda__=exp=1582818882~hmac=ff4a6fa9eac7556fad02a6429e4046de ######################################################################## 100.0% ==> Pouring libevent-2.1.11_1.catalina.bottle.tar.gz ? /usr/local/Cellar/libevent/2.1.11_1: 1,063 files, 5MB ==> Installing php dependency: nghttp2 ==> Downloading https://homebrew.bintray.com/bottles/nghttp2-1.40.0.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/7d/7d8e5ffd4a51ee4c511f19b37d0285880d27239e0880113b6ad1412432aa9d11?__gda__=exp=1582818889~hmac=d17dd8c2d092360925cf7fec31cc91f2 ######################################################################## 100.0% ==> Pouring nghttp2-1.40.0.catalina.bottle.tar.gz ? /usr/local/Cellar/nghttp2/1.40.0: 26 files, 2.7MB ==> Installing php dependency: openldap ==> Downloading https://homebrew.bintray.com/bottles/openldap-2.4.49.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/26/26efb37f53ae1a3815213adf9ab815c66b7197a3d212f994dd4e5b4140cf3e4e?__gda__=exp=1582818892~hmac=a1323e810a84f9db03ef763591a96981 ######################################################################## 100.0% ==> Pouring openldap-2.4.49.catalina.bottle.tar.gz ==> Caveats openldap is keg-only, which means it was not symlinked into /usr/local, because macOS already provides this software and installing another version in parallel can cause all kinds of trouble. If you need to have openldap first in your PATH run: echo 'export PATH="/usr/local/opt/openldap/bin:$PATH"' >> ~/.bash_profile echo 'export PATH="/usr/local/opt/openldap/sbin:$PATH"' >> ~/.bash_profile For compilers to find openldap you may need to set: export LDFLAGS="-L/usr/local/opt/openldap/lib" export CPPFLAGS="-I/usr/local/opt/openldap/include" ==> Summary ? /usr/local/Cellar/openldap/2.4.49: 328 files, 6.7MB ==> Installing php dependency: rtmpdump ==> Downloading https://homebrew.bintray.com/bottles/rtmpdump-2.4+20151223_1.catalina.bottle.tar.gz ######################################################################## 100.0% ==> Pouring rtmpdump-2.4+20151223_1.catalina.bottle.tar.gz ? /usr/local/Cellar/rtmpdump/2.4+20151223_1: 20 files, 443.4KB ==> Installing php dependency: curl-openssl ==> Downloading https://homebrew.bintray.com/bottles/curl-openssl-7.68.0.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/c4/c4dd2e8a36d2e4487d9d8c483d42be8b2aa3c5a0a326c10b35aeca82fccd8c0f?__gda__=exp=1582818904~hmac=571f4b21636431a1d9ef06c557839443 ######################################################################## 100.0% ==> Pouring curl-openssl-7.68.0.catalina.bottle.tar.gz ==> Caveats curl-openssl is keg-only, which means it was not symlinked into /usr/local, because macOS already provides this software and installing another version in parallel can cause all kinds of trouble. If you need to have curl-openssl first in your PATH run: echo 'export PATH="/usr/local/opt/curl-openssl/bin:$PATH"' >> ~/.bash_profile For compilers to find curl-openssl you may need to set: export LDFLAGS="-L/usr/local/opt/curl-openssl/lib" export CPPFLAGS="-I/usr/local/opt/curl-openssl/include" For pkg-config to find curl-openssl you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/curl-openssl/lib/pkgconfig" ==> Summary ? /usr/local/Cellar/curl-openssl/7.68.0: 456 files, 3.4MB ==> Installing php dependency: libtool ==> Downloading https://homebrew.bintray.com/bottles/libtool-2.4.6_1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/38/38212486e78db33048438cffe38b6914f13553e7bb8c7d3d2fbecb18a6481d3c?__gda__=exp=1582818908~hmac=130c8c5a3f79ba8697226122d5728099 ######################################################################## 100.0% ==> Pouring libtool-2.4.6_1.catalina.bottle.tar.gz ==> Caveats In order to prevent conflicts with Apple's own libtool we have prepended a "g" so, you have instead: glibtool and glibtoolize. ==> Summary ? /usr/local/Cellar/libtool/2.4.6_1: 71 files, 3.7MB ==> Installing php dependency: unixodbc ==> Downloading https://homebrew.bintray.com/bottles/unixodbc-2.3.7.catalina.bottle.1.tar.gz ==> Downloading from https://akamai.bintray.com/03/03ba378d971af98d07652f978548ffacb4c155ba11dd36af9d46af36e2d5674b?__gda__=exp=1582818912~hmac=efb8bc9f866a054e3cd679232d1cd0c3 ######################################################################## 100.0% ==> Pouring unixodbc-2.3.7.catalina.bottle.1.tar.gz ? /usr/local/Cellar/unixodbc/2.3.7: 46 files, 1.9MB ==> Installing php dependency: freetds ==> Downloading https://homebrew.bintray.com/bottles/freetds-1.1.24.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/36/363d44ed3a0ec8f9768987bc6d873913dd30818933ea9bb9c290580dbd6d11ab?__gda__=exp=1582818915~hmac=6a75fe2584c3fdb8191aa24f792faa73 ######################################################################## 100.0% ==> Pouring freetds-1.1.24.catalina.bottle.tar.gz ? /usr/local/Cellar/freetds/1.1.24: 66 files, 3.5MB ==> Installing php dependency: libpng ==> Downloading https://homebrew.bintray.com/bottles/libpng-1.6.37.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/c8/c8e74da602c21f978cd7ee3d489979b4fc6681e71f678a1d99012943ee3a909f?__gda__=exp=1582818919~hmac=65f5c5c989008e57fec50b0373e0d4fd ######################################################################## 100.0% ==> Pouring libpng-1.6.37.catalina.bottle.tar.gz ? /usr/local/Cellar/libpng/1.6.37: 27 files, 1.2MB ==> Installing php dependency: freetype ==> Downloading https://homebrew.bintray.com/bottles/freetype-2.10.1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/dd/ddd686141a969caec11ea248324e3736f6db50a54673187be103dde39cb01ebf?__gda__=exp=1582818922~hmac=b02f5e3ce47dc74d07c17a18141ee96c ######################################################################## 100.0% ==> Pouring freetype-2.10.1.catalina.bottle.tar.gz ? /usr/local/Cellar/freetype/2.10.1: 61 files, 2.2MB ==> Installing php dependency: libffi ==> Downloading https://homebrew.bintray.com/bottles/libffi-3.2.1.catalina.bottle.tar.gz ######################################################################## 100.0% ==> Pouring libffi-3.2.1.catalina.bottle.tar.gz ==> Caveats libffi is keg-only, which means it was not symlinked into /usr/local, because some formulae require a newer version of libffi. For compilers to find libffi you may need to set: export LDFLAGS="-L/usr/local/opt/libffi/lib" For pkg-config to find libffi you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig" ==> Summary ? /usr/local/Cellar/libffi/3.2.1: 16 files, 300.7KB ==> Installing php dependency: pcre ==> Downloading https://homebrew.bintray.com/bottles/pcre-8.44.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/f8/f8ac266e04f984fa55091a43f0fdc39a40d57c2489d289a186c88ccedaba7eeb?__gda__=exp=1582818931~hmac=61228c226c610e48e353419df861e9e8 ######################################################################## 100.0% ==> Pouring pcre-8.44.catalina.bottle.tar.gz ? /usr/local/Cellar/pcre/8.44: 204 files, 5.5MB ==> Installing php dependency: gdbm ==> Downloading https://homebrew.bintray.com/bottles/gdbm-1.18.1.catalina.bottle.1.tar.gz ######################################################################## 100.0% ==> Pouring gdbm-1.18.1.catalina.bottle.1.tar.gz ? /usr/local/Cellar/gdbm/1.18.1: 20 files, 602.8KB ==> Installing php dependency: readline ==> Downloading https://homebrew.bintray.com/bottles/readline-8.0.4.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/6a/6ae1c8e7c783f32bd22c6085caa4d838fed7fb386da7e40ca47b87ec9b1237d6?__gda__=exp=1582818942~hmac=ebac9456e17b393d45f7e9415ea5c5e3 ######################################################################## 100.0% ==> Pouring readline-8.0.4.catalina.bottle.tar.gz ==> Caveats readline is keg-only, which means it was not symlinked into /usr/local, because macOS provides the BSD libedit library, which shadows libreadline. In order to prevent conflicts when programs look for libreadline we are defaulting this GNU Readline installation to keg-only. For compilers to find readline you may need to set: export LDFLAGS="-L/usr/local/opt/readline/lib" export CPPFLAGS="-I/usr/local/opt/readline/include" For pkg-config to find readline you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/readline/lib/pkgconfig" ==> Summary ? /usr/local/Cellar/readline/8.0.4: 48 files, 1.5MB ==> Installing php dependency: sqlite ==> Downloading https://homebrew.bintray.com/bottles/sqlite-3.31.1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/e0/e09e8c96db88178e4f47b0cdab6477c46fa582326900ec9309c3ce1b9f7ff9aa?__gda__=exp=1582818945~hmac=2c50e62518d35724bc04bdacbed29792 ######################################################################## 100.0% ==> Pouring sqlite-3.31.1.catalina.bottle.tar.gz ==> Caveats sqlite is keg-only, which means it was not symlinked into /usr/local, because macOS provides an older sqlite3. If you need to have sqlite first in your PATH run: echo 'export PATH="/usr/local/opt/sqlite/bin:$PATH"' >> ~/.bash_profile For compilers to find sqlite you may need to set: export LDFLAGS="-L/usr/local/opt/sqlite/lib" export CPPFLAGS="-I/usr/local/opt/sqlite/include" For pkg-config to find sqlite you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/sqlite/lib/pkgconfig" ==> Summary ? /usr/local/Cellar/sqlite/3.31.1: 11 files, 4MB ==> Installing php dependency: xz ==> Downloading https://homebrew.bintray.com/bottles/xz-5.2.4.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/5a/5aa90b77d5e772dacd38146bbb7ff2fa43f210e3779def2c0f16cbdae8589aa3?__gda__=exp=1582818949~hmac=0457e5b1e3c2479b062e105d9529557e ######################################################################## 100.0% ==> Pouring xz-5.2.4.catalina.bottle.tar.gz ? /usr/local/Cellar/xz/5.2.4: 92 files, 1MB ==> Installing php dependency: python ==> Downloading https://homebrew.bintray.com/bottles/python-3.7.6_1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/38/3871ef8b53270576c46489ae397f245b84772c405085238790cf5faa1853b33a?__gda__=exp=1582818952~hmac=c9375e123cb128e1ffa60068e0065ded ######################################################################## 100.0% ==> Pouring python-3.7.6_1.catalina.bottle.tar.gz ==> /usr/local/Cellar/python/3.7.6_1/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python/3.7.6_1/bin --install-lib=/usr/l ==> /usr/local/Cellar/python/3.7.6_1/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python/3.7.6_1/bin --install-lib=/usr/l ==> /usr/local/Cellar/python/3.7.6_1/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python/3.7.6_1/bin --install-lib=/usr/l ==> Caveats Python has been installed as /usr/local/bin/python3 Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to `python3`, `python3-config`, `pip3` etc., respectively, have been installed into /usr/local/opt/python/libexec/bin You can install Python packages with pip3 install <package> They will install into the site-package directory /usr/local/lib/python3.7/site-packages See: https://docs.brew.sh/Homebrew-and-Python ==> Summary ? /usr/local/Cellar/python/3.7.6_1: 3,977 files, 61MB ==> Installing php dependency: glib ==> Downloading https://homebrew.bintray.com/bottles/glib-2.62.5.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/ff/ffe825b5349fa644019af75ab82581fe312c689ab4c6add223ee119e1f35733d?__gda__=exp=1582818975~hmac=15d55697b0725c34ea51e0782a75df0e ######################################################################## 100.0% ==> Pouring glib-2.62.5.catalina.bottle.tar.gz ==> Caveats Bash completion has been installed to: /usr/local/etc/bash_completion.d ==> Summary ? /usr/local/Cellar/glib/2.62.5: 435 files, 15.5MB ==> Installing php dependency: gmp ==> Downloading https://homebrew.bintray.com/bottles/gmp-6.2.0.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/2e/2e6acd6e62d1b8ef0800061e113aea30a63f56b32b99c010234c0420fd6d3ecf?__gda__=exp=1582818981~hmac=62c42e81972cc0a18886fea789616644 ######################################################################## 100.0% ==> Pouring gmp-6.2.0.catalina.bottle.tar.gz ? /usr/local/Cellar/gmp/6.2.0: 20 files, 3.2MB ==> Installing php dependency: icu4c ==> Downloading https://homebrew.bintray.com/bottles/icu4c-64.2.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/e9/e9ae7bb5a76b48e82f56bc744eaaa1e9bdb5ca49ea6b5a2e4d52f57ad331f063?__gda__=exp=1582818985~hmac=7c3a12000919259856aca1456a11137e ######################################################################## 100.0% ==> Pouring icu4c-64.2.catalina.bottle.tar.gz ==> Caveats icu4c is keg-only, which means it was not symlinked into /usr/local, because macOS provides libicucore.dylib (but nothing else). If you need to have icu4c first in your PATH run: echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile For compilers to find icu4c you may need to set: export LDFLAGS="-L/usr/local/opt/icu4c/lib" export CPPFLAGS="-I/usr/local/opt/icu4c/include" For pkg-config to find icu4c you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig" ==> Summary ? /usr/local/Cellar/icu4c/64.2: 257 files, 69.3MB ==> Installing php dependency: jpeg ==> Downloading https://homebrew.bintray.com/bottles/jpeg-9d.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/8f/8f7b82a952fb3937889c7f22da1403e5338cd320495917eb26b0c5b2e614791c?__gda__=exp=1582818991~hmac=f6095ad96f1524b71693e95daf53ae11 ######################################################################## 100.0% ==> Pouring jpeg-9d.catalina.bottle.tar.gz ? /usr/local/Cellar/jpeg/9d: 21 files, 775.2KB ==> Installing php dependency: libpq ==> Downloading https://homebrew.bintray.com/bottles/libpq-12.2.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/64/64bab543c341a2e26246aa434c8ef27c48985f397996a975751f2c5ea91cd3c3?__gda__=exp=1582818995~hmac=e262fb3d2bd0116e4e047d1fcb36f28b ######################################################################## 100.0% ==> Pouring libpq-12.2.catalina.bottle.tar.gz ==> Caveats libpq is keg-only, which means it was not symlinked into /usr/local, because conflicts with postgres formula. If you need to have libpq first in your PATH run: echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profile For compilers to find libpq you may need to set: export LDFLAGS="-L/usr/local/opt/libpq/lib" export CPPFLAGS="-I/usr/local/opt/libpq/include" For pkg-config to find libpq you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/libpq/lib/pkgconfig" ==> Summary ? /usr/local/Cellar/libpq/12.2: 2,240 files, 23.8MB ==> Installing php dependency: libsodium ==> Downloading https://homebrew.bintray.com/bottles/libsodium-1.0.18_1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/db/db372521cd0b1861a5b578bee22426f3a1f4f7cb3c382be1f842da4715dc65bd?__gda__=exp=1582819005~hmac=b1719932c78dd721b5c91e5e01cd0d0f ######################################################################## 100.0% ==> Pouring libsodium-1.0.18_1.catalina.bottle.tar.gz ? /usr/local/Cellar/libsodium/1.0.18_1: 73 files, 1012.8KB ==> Installing php dependency: libzip ==> Downloading https://homebrew.bintray.com/bottles/libzip-1.6.1.catalina.bottle.tar.gz ######################################################################## 100.0% ==> Pouring libzip-1.6.1.catalina.bottle.tar.gz ? /usr/local/Cellar/libzip/1.6.1: 135 files, 598.5KB ==> Installing php dependency: oniguruma ==> Downloading https://homebrew.bintray.com/bottles/oniguruma-6.9.4.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/05/05e25bc53db0cf338a7f765da76c66260972d6b4e259be415bc17807a8b60fe9?__gda__=exp=1582819014~hmac=4162f73fbfb682871a1591cd1ae35a3e ######################################################################## 100.0% ==> Pouring oniguruma-6.9.4.catalina.bottle.tar.gz ? /usr/local/Cellar/oniguruma/6.9.4: 17 files, 1.3MB ==> Installing php dependency: tidy-html5 ==> Downloading https://homebrew.bintray.com/bottles/tidy-html5-5.6.0.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/fb/fb2134180fbdb92cc10f3fad33c769073adceb7796e465db7dbc3778f7d3547a?__gda__=exp=1582819017~hmac=11c55ddefda47fe9d139207d8f3f8be0 ######################################################################## 100.0% ==> Pouring tidy-html5-5.6.0.catalina.bottle.tar.gz ? /usr/local/Cellar/tidy-html5/5.6.0: 14 files, 2.6MB ==> Installing php dependency: libtiff ==> Downloading https://homebrew.bintray.com/bottles/libtiff-4.1.0.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/44/449bd9123e73e4c4eab85b77322d769cc9df0f6adab05e9b9319b012d1215a68?__gda__=exp=1582819021~hmac=c5a5f7355528adb9b159a3501bcee6b2 ######################################################################## 100.0% ==> Pouring libtiff-4.1.0.catalina.bottle.tar.gz ? /usr/local/Cellar/libtiff/4.1.0: 247 files, 3.7MB ==> Installing php dependency: webp ==> Downloading https://homebrew.bintray.com/bottles/webp-1.1.0.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/27/27c76a7054277ff5a2e844c5996fc731d8644acbaaa505d35dba42c4a48a0c51?__gda__=exp=1582819025~hmac=10924b18bf5bf57f77e57dfe35f6a184 ######################################################################## 100.0% ==> Pouring webp-1.1.0.catalina.bottle.tar.gz ? /usr/local/Cellar/webp/1.1.0: 39 files, 2.1MB ==> Installing php ==> Downloading https://homebrew.bintray.com/bottles/php-7.4.3.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/93/9370af1b117049783f81968fc800d1710224581cb8d9f396c38d9eef8aedf3ac?__gda__=exp=1582819028~hmac=03e1443c8f4e7eebc970641b392b094c ######################################################################## 100.0% ==> Pouring php-7.4.3.catalina.bottle.tar.gz ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set php_ini /usr/local/etc/php/7.4/php.ini system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set php_dir /usr/local/share/pear system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set doc_dir /usr/local/share/pear/doc system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set ext_dir /usr/local/lib/php/pecl/20190902 system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set bin_dir /usr/local/opt/php/bin system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set data_dir /usr/local/share/pear/data system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set cfg_dir /usr/local/share/pear/cfg system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set www_dir /usr/local/share/pear/htdocs system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set man_dir /usr/local/share/man system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set test_dir /usr/local/share/pear/test system ==> /usr/local/Cellar/php/7.4.3/bin/pear config-set php_bin /usr/local/opt/php/bin/php system ==> /usr/local/Cellar/php/7.4.3/bin/pear update-channels ==> Caveats To enable PHP in Apache add the following to httpd.conf and restart Apache: LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> Finally, check DirectoryIndex includes index.php DirectoryIndex index.php index.html The php.ini and php-fpm.ini file can be found in: /usr/local/etc/php/7.4/ To have launchd start php now and restart at login: brew services start php Or, if you don't want/need a background service you can just run: php-fpm ==> Summary ? /usr/local/Cellar/php/7.4.3: 517 files, 76MB ==> Caveats ==> apr apr is keg-only, which means it was not symlinked into /usr/local, because Apple's CLT package contains apr. If you need to have apr first in your PATH run: echo 'export PATH="/usr/local/opt/apr/bin:$PATH"' >> ~/.bash_profile ==> apr-util apr-util is keg-only, which means it was not symlinked into /usr/local, because Apple's CLT package contains apr. If you need to have apr-util first in your PATH run: echo 'export PATH="/usr/local/opt/apr-util/bin:$PATH"' >> ~/.bash_profile ==> libidn Emacs Lisp files have been installed to: /usr/local/share/emacs/site-lisp/libidn ==> openldap openldap is keg-only, which means it was not symlinked into /usr/local, because macOS already provides this software and installing another version in parallel can cause all kinds of trouble. If you need to have openldap first in your PATH run: echo 'export PATH="/usr/local/opt/openldap/bin:$PATH"' >> ~/.bash_profile echo 'export PATH="/usr/local/opt/openldap/sbin:$PATH"' >> ~/.bash_profile For compilers to find openldap you may need to set: export LDFLAGS="-L/usr/local/opt/openldap/lib" export CPPFLAGS="-I/usr/local/opt/openldap/include" ==> curl-openssl curl-openssl is keg-only, which means it was not symlinked into /usr/local, because macOS already provides this software and installing another version in parallel can cause all kinds of trouble. If you need to have curl-openssl first in your PATH run: echo 'export PATH="/usr/local/opt/curl-openssl/bin:$PATH"' >> ~/.bash_profile For compilers to find curl-openssl you may need to set: export LDFLAGS="-L/usr/local/opt/curl-openssl/lib" export CPPFLAGS="-I/usr/local/opt/curl-openssl/include" For pkg-config to find curl-openssl you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/curl-openssl/lib/pkgconfig" ==> libtool In order to prevent conflicts with Apple's own libtool we have prepended a "g" so, you have instead: glibtool and glibtoolize. ==> libffi libffi is keg-only, which means it was not symlinked into /usr/local, because some formulae require a newer version of libffi. For compilers to find libffi you may need to set: export LDFLAGS="-L/usr/local/opt/libffi/lib" For pkg-config to find libffi you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig" ==> readline readline is keg-only, which means it was not symlinked into /usr/local, because macOS provides the BSD libedit library, which shadows libreadline. In order to prevent conflicts when programs look for libreadline we are defaulting this GNU Readline installation to keg-only. For compilers to find readline you may need to set: export LDFLAGS="-L/usr/local/opt/readline/lib" export CPPFLAGS="-I/usr/local/opt/readline/include" For pkg-config to find readline you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/readline/lib/pkgconfig" ==> sqlite sqlite is keg-only, which means it was not symlinked into /usr/local, because macOS provides an older sqlite3. If you need to have sqlite first in your PATH run: echo 'export PATH="/usr/local/opt/sqlite/bin:$PATH"' >> ~/.bash_profile For compilers to find sqlite you may need to set: export LDFLAGS="-L/usr/local/opt/sqlite/lib" export CPPFLAGS="-I/usr/local/opt/sqlite/include" For pkg-config to find sqlite you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/sqlite/lib/pkgconfig" ==> python Python has been installed as /usr/local/bin/python3 Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to `python3`, `python3-config`, `pip3` etc., respectively, have been installed into /usr/local/opt/python/libexec/bin You can install Python packages with pip3 install <package> They will install into the site-package directory /usr/local/lib/python3.7/site-packages See: https://docs.brew.sh/Homebrew-and-Python ==> glib Bash completion has been installed to: /usr/local/etc/bash_completion.d ==> icu4c icu4c is keg-only, which means it was not symlinked into /usr/local, because macOS provides libicucore.dylib (but nothing else). If you need to have icu4c first in your PATH run: echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile For compilers to find icu4c you may need to set: export LDFLAGS="-L/usr/local/opt/icu4c/lib" export CPPFLAGS="-I/usr/local/opt/icu4c/include" For pkg-config to find icu4c you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig" ==> libpq libpq is keg-only, which means it was not symlinked into /usr/local, because conflicts with postgres formula. If you need to have libpq first in your PATH run: echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profile For compilers to find libpq you may need to set: export LDFLAGS="-L/usr/local/opt/libpq/lib" export CPPFLAGS="-I/usr/local/opt/libpq/include" For pkg-config to find libpq you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/libpq/lib/pkgconfig" ==> php To enable PHP in Apache add the following to httpd.conf and restart Apache: LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> Finally, check DirectoryIndex includes index.php DirectoryIndex index.php index.html The php.ini and php-fpm.ini file can be found in: /usr/local/etc/php/7.4/ To have launchd start php now and restart at login: brew services start php Or, if you don't want/need a background service you can just run: php-fpm
- 投稿日:2020-02-28T00:40:31+09:00
PHPでmkdir時に4桁のパーミッションを文字列型の変数の値より指定するには
PHPのmkdir関数でディレクトリを作成する際に8進数4桁のパーミッションを指定する場合、mkdir関数の第2引数へ
mkdir('/var/dat/hogefuga', 0755, true);のような形で指定することで、0755(rwxr-xr-x)というパーミッションのディレクトリが作成されます。
変数でセットする場合も、
$perm = 0755; mkdir('/var/dat/hogefuga', 0755, true);とすることで、上記と同様のパーミッションでディレクトリを作成することができます。
しかし、変数が文字列型である場合、例えば
$perm = '0755'; mkdir('/var/dat/hogefuga', 0755, true);である場合、0755(rwxr-xr-x)とならず(例えば、-wxr---tのようになり)、意図したパーミッションとならない場合があります。
変数が文字列型であるケースとしては、Webシステムから送信された値や、DBやAPI、ファイル等から取得した値を使用するケースが挙げられます。
原因
文字列型の値は、10進数の数値として扱われます。つまり、0755(8進数)ではなく、755(10進数)として扱われます。
これにより、意図したパーミッションでディレクトリを作成することが出来ません。対応
octdec関数で文字列型を8進数の整数へ変換することで、この問題を解消することができます。
<?php $perm = '0755'; $mydir = '/var/dat/hogefuga'; mkdir($mydir, octdec($perm), true);参考