Macのphpにcomposerを入れる

ee9king に投稿

composerを入れるのが目的でなかったのだけれど、そこで力尽きてしまった。

コロナ影響によって会社でテレワークが始まった、いろんなデータをオンライン上において見やすするのかと思えば、自分たちが管理しやいように今間μでお同じファイルサーバ上のエクセルにこの人出勤、テレワークみたいなものを書いておくだけ。それはそれで、いいけど、どのシステムともリンクしてない。だから、いつ誰が?ってときは、そのファイルを見に行くことになる。しかも、そのリンクが都合で変えられるからどっかにリンクするのも億劫。まるで日本社会の縮図だ、インフラの整備なんもやらずに、とりあえず表作ったみたいな。だからこれ見て、って。

テレワークに依存すると、会議や打ち合わせがTeamsとかになるのだが、このTeamsがファイルサーバのリンクが入れられない、ググっても不満を書いている人がいるがまだ対応できていないようだ。リンクはhttpだけ、なので、httpサーバに迂回リンクページをおいて、ファイルサーバを参照できるようにした。IEでアクセスすればエクスプローラからファイルにアクセスできるようになる。しかしながら、このやり方でももう一回クリックしてエクセルファイルを開き、そこで、確認するようにしなければならない。さらに、悪いことに誰かが編集してファイルを閉じると前と表示が違っていて、「いー!!」っとなるのはうけあい。エクセルは編集した人が縮小したり、ウインドウ枠固定したりすると、別の人が見ると表示が崩れる。

だったら、エクセルのファイル読んできて、その迂回ページに表示させるようにすればいいじゃんね!ってことで、調べていた。

ファイルをアップロードしてphpで取り込むやり方はしっているので、エクセルを読み込めればなんとかなるんじゃね?と思った、

phpExcelというのがあるのだがメンテされなくてphpspreadsheetってのが使われるらしい。ここまで調べられたが、この後の情報が少ない。いろいろ調べた結果、phpにcomposerってのを入れてそれで、spreadsheetのライブラリを入れるらしい。(どこにに入っているのか、全然わかんないんだけどね)

$ composer require phpoffice/phpspreadsheet

Using version ^1.11 for phpoffice/phpspreadsheet
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 4 installs, 0 updates, 0 removals
  - Installing psr/simple-cache (1.0.1): Downloading (100%)         
  - Installing markbaker/matrix (1.2.0): Downloading (100%)         
  - Installing markbaker/complex (1.4.8): Downloading (100%)         
  - Installing phpoffice/phpspreadsheet (1.11.0): Downloading (100%)         
phpoffice/phpspreadsheet suggests installing mpdf/mpdf (Option for rendering PDF with PDF Writer)
phpoffice/phpspreadsheet suggests installing dompdf/dompdf (Option for rendering PDF with PDF Writer)
phpoffice/phpspreadsheet suggests installing tecnickcom/tcpdf (Option for rendering PDF with PDF Writer)
phpoffice/phpspreadsheet suggests installing jpgraph/jpgraph (Option for rendering charts, or including charts with PDF or HTML Writers)
Writing lock file
Generating autoload files

紆余曲折したが、一応エラーなく入った?と思われる。

で、ここまでくるのに、いくつか大変だった。会社のサーバでやる前に家で試すため、Macに入れたのがいけなかったのか、ちょっとわからないが、

Catalinaに入ってるphpは7.3でしたがここにcomposerを追加する方法はかかれていて、それをやったら、追加はできたようですが、spreadsheetをいれるときに、phpにzip-extensionがないとか言っていて、これをやるには、ぢうしたらいいのかというのがどこにも記載されてない。ググってでてくるのは、homebrewを使うものばかりだったのでしかたなく、brewでやてみた。Permissionがないとか言われてメッセージ通り変えたりとか、usr/local/sbinがないとか言って作ったりとかやったりしながら、

brew update
brew install php
brew link php

ものすごく時間がかかって7.4がインストールされ、ようやっとここまできたものの、php -vでかえされるのは、もともと入っているphp7.3だった。最終的に、パスを通せなくて、

https://koukitips.net/i-raised-my-macs-php-version-to-7-3/

ここのことをやったら、php -vで7.4が返されるようになった。でも、でも、でもっ!、phpinfoで帰ってくるのは7.3のままなんだ!、どうすりゃいいの?

brewでapacheをインストール

全部brewでやんなきゃいけんのじゃないかって思った。で、

https://weblabo.oscasierra.net/apache-macos-install-homebrew/

ここに書いたることを全部やって、Apacheを入れた。起動しているようだがServernameとport番号、必要なmoduleをコメントアウトしたりして起動したが、phpが有効になんない。順番かと思って、再度、brew phpからやり直しけどおなじ。また調べて、ここに

https://qiita.com/kobiyama/items/4e48604f1120cfe47f36

これを

LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
<IfModule php7_module>
  AddType application/x-httpd-php .php
</IfModule>

phpinfoきた!、つかApache入れ直さなくても、ここの記述変えればよかったんじゃないかって、あとで思った。

これでようやく、php7.4のinfoでapacheが動く

覚え?

apacheの設定はこれになってるって書いてある。覚えとかなきゃ?

パス 説明
/usr/local/var/www ドキュメントルート、Apache httpd の公開ディレクトリ
/usr/local/etc/httpd/httpd.conf 設定ファイル
/usr/local/bin/apachectl Apache httpd の起動・停止などの制御を担うプログラム (実体へのシンボリックリンク)
/usr/local/Cellar/httpd/ インストールした Apache httpd の実体ファイルが保存されているディレクトリ

起動と停止

 それでは Apache httpd を起動・停止してみましょう。 起動するには次のようにコマンドを実行します。 なお次のコマンドを実行することにより、次回以降のコンピュータ起動時には、自動的に Apache httpd が起動されます。

$ sudo brew services start httpd
==> Successfully started `httpd` (label: homebrew.mxcl.httpd)

 Apache httpd を起動したら http://localhost にアクセスしてみてください。 It work! と書かれたページが表示されたでしょうか。

 Apache httpd を停止する場合には次のコマンドです。

$ sudo brew services stop httpd
==> Successfully stopped `httpd` (label: homebrew.mxcl.httpd)
Stopping `httpd`... (might take a while)

たぶん、つぎから、apachctlで動くのだろう

 

Tags

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
  • 行と段落は自動的に折り返されます。