SMART LLC

PHPからのファイルアクセスを許可する方法

公開日:2015/03/23

去年の秋から空いた時間にゆるゆると勉強してたPHP。
仕事がきた( ゚д゚)
まだ確定じゃないけど、現状PHPで動いてる請求管理システムをxpaで作り直す仕事。
現行システムの動作確認用にサーバをセットアップしてもらったけどいろいろエラーが出る。
構成はWindows×IIS。
正常に動作するようにエラーを解決していく過程を忘れないようにメモする。

PHPExcel

あるボタンを押したら出たエラー。

Warning: include(Classes/PHPExcel.php) [function.include]: failed to open stream: No such file or directory

includeするファイルがない。
ClassessフォルダもPHPExcel.phpも見つからないのでネットで探す。
PHPExcel発見。
PHPからスプレッドシートを操作できるフリーライセンスのPHPライブラリ。
Download ZIPボタンを押してダウンロード。
解凍してClassesフォルダをwwwrootフォルダにコピーするだけ(σ・∀・)σ
上記エラーは出なくなった。

open_basedir

代わりに出た新しいエラー。

Warning: realpath() [function.realpath]: open_basedir restriction in effect. File(C:\WINDOWS\Temp) is not within the allowed path(s): (C:\inetpub\wwwroot;C:\PHP\upload)

PHPExcel内でTempフォルダに対してrealpath()関数を実行するとこでエラーになってる。
でもTempフォルダは実行の許可されるパスの一覧にいねえよって言われてる。
ソース追ってないけどきっとTempフォルダにExcelファイル作成してダウンロードさせるんだろう。
PHPからアクセスできるファイルはopen-basedirで設定する。
具体的にはPHPのインストールフォルダにあるphp.ini内で設定する。

変更前。Tempフォルダは許可されていない。

open_basedir = "C:\inetpub\wwwroot;C:\PHP\upload"

変更後。Tempフォルダも許可する。

open_basedir = "C:\inetpub\wwwroot;C:\PHP\upload;C:\WINDOWS\Temp"

エラーがなくなってExcelファイルが作成されることを確認。
PHPExcel、今度自分でも何かつくってみよう。

実際に運用されてるシステムのソースを見るのは勉強になる。
現場が必要とする機能を知ることができるし知らなかったライブラリとかツールにも出会える。
独学でもある程度の知識はつけられるけどやっぱりスキルアップには仕事で受けるのが一番だな。

SHARE