質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

6769閲覧

存在しているフルパーミッションのディレクトリが、No such file or directoryになったりPermission deniedになる

bitcoiner2045

総合スコア47

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/08/22 05:07

編集2018/08/22 05:12

css.php

private function getHistory() { $css_history = array(); $dir = Config::get('base_site_dir') . Config::get('■■■■') . '/' . $this->data['■■■■']['■■■■']; if(!file_exists($dir)){ //ディレクトリが無い場合は作成 var_dump($dir); mkdir($dir,0777,true); }

変数$dirの中身

string(80) "/Applications/XAMPP/xamppfiles/htdocs/■■■■/■■■■/css/★★★★"

でアクセスすると、mkdir(): Permission denied(アクセス拒否)となります。
ディレクトリ★★★★のパーミッションは、
自分:読み/書き、
staff:読み/書き、
everyone:読み/書き、
にしてますが、アクセス拒否になる原因は何が考えられますか。

又mkdir($dir,0777,true);をmkdir($dir);にすると、mkdir(): No such file or directoryになるので、
/★★★★は読み込みされていないのでしょうか。
どなたか私にご教示下さいませんか。宜しくお願いします。

drwxrwxrwx 3 ■■■■ staff 96 8 22 11:50 ★★★★(ディレクトリ)
環境 XAMPP macOS phpstorm

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ディレクトリ★★★★のパーミッションは、

?無いから作ろうとしているのでは?

/Applications/XAMPP/xamppfiles/htdocs/■■■■/■■■■/css/★★★★
の途中のパス名の存在とアクセス権を全て確認して下さい。

/Applications/XAMPP/xamppfiles/htdocs/■■■■/が存在するが、/Applications/XAMPP/xamppfiles/htdocs/■■■■/■■■■/が存在しない場合、/Applications/XAMPP/xamppfiles/htdocs/■■■■/に書き込み権限が必要です。

投稿2018/08/22 05:22

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bitcoiner2045

2018/08/22 05:37 編集

MacでFinderから/Applicationsから順番通り★★★★まで辿り、 ディレクトリ★★★★を右クリック→情報をみるで確認しましたが、 /Applications/XAMPP/xamppfiles/htdocs/■■■■/■■■■/css/は確かに存在しています。又/■■■■/■■■■/css/★★★★はフルパーミッションに設定しています。
otn

2018/08/22 05:42

回答にも書きましたが、/■■■■/■■■■/css/★★★★ が存在するなら、file_existsのチェックが真になり、mkdirは実行されません。 どこかに勘違いがありますよ。
otn

2018/08/22 05:45

> MacでFinderから 目で判断したのなら怪しい。var_dumpの結果をコピペで確認して下さい。
bitcoiner2045

2018/08/22 05:50

つい先ほど(14:50)のvar_dumpの結果です。 string(80) " /Applications/XAMPP/xamppfiles/htdocs/■■■■/■■■■/css/★★★★"
otn

2018/08/22 05:59

いや、var_dumpの結果をここに貼るんじゃなくて、Mac上で、コピペして存在確認して下さいという意味です。目でディレクトリを見てあるかどうか確認するんじゃなくて。
bitcoiner2045

2018/08/22 06:05

/Applications/XAMPP/xamppfiles/htdocs/■■■■/■■■■/css/★★★★をそのままspotlight検索で入力したら、★★★★がディレクトリが出て来ましたよ。確認の仕方は合ってますよね?
bitcoiner2045

2018/08/22 06:10

追記 ■■■■:~ ■■■■$ dirname /Applications/XAMPP/xamppfiles/htdocs/■■■■/■■■■/css/★★★★をコマンドに入力すると、 /Applications/XAMPP/xamppfiles/htdocs/■■■■/■■■■/cssが表示されましたので、全部のディレクトリありますよね?
otn

2018/08/22 06:18

存在するなら、質問にあるコードを実行した場合、file_existsが真になり、mkdirは実行されませんので、エラーも出ません。 mkdirが実行されたと言う事は、file_existsが偽であり、存在しないと言う事です。 もしくは、質問にあるコードと違う物を実行しているか。 端末で、ls -l "ここに貼り付け" で、表示されますか?
otn

2018/08/22 06:20

dirnameはファイルの存在と無関係です。単なる文字列処理コマンドです。
bitcoiner2045

2018/08/22 06:29

■■■■:~ ■■■■$ ls -l /Applications/XAMPP/xamppfiles/htdocs/■■■■/■■■■/css total 584 drwxrwxrwx 3 ■■■■ staff 96 8 22 11:50 ★★★★ ★★★★のディレクトリは表示されてますよね。
otn

2018/08/22 06:53

可能性を列挙しておきます。エラーが出る事がおかしい以前にmkdirが実行される事がおかしいと思ってください。まずはそこからです。 ・違うMacを見ている ・違うプログラムを実行している ・■や★部分が多バイト文字で、エンコーディングが違う
bitcoiner2045

2018/08/22 07:07

ありがとうございます。上記確認して見ます。ちなみに下記パーミッションです。 Applications ```drwxrwxr-x+ 51 root admin 1632 8 22 11:28 Applications``` XAMPP ```drwxrwxr-x 11 root admin 352 8 21 17:52 XAMPP``` xamppfiles ```drwxrwxr-x 38 root admin 1216 8 17 19:41 xamppfiles``` htdocs ```drwxrwxr-x 14 root admin 448 8 21 18:00 htdocs``` ■■■■ ```drwxrwxrwx 23 自分の名前 staff 736 8 20 16:57 ■■■■``` ■■■■ ```drwxrwxrwx 15 自分の名前 staff 480 8 17 19:33 ■■■■``` css ```drwxrwxrwx 16 自分の名前 staff 512 8 22 09:36 css```
guest

0

ディレクトリに r 権限があっても x 権限が なければ、ls で見てもそのディレクトリの中の ファイルをリストすることはできません。

 記述している通りならば 対象ディレクトリの権限が 666 (drw-rw-rw) になっているかと思いますが
755 (drwxr-xr-x)にして

 どうなるか試してみてください。

 x 権限もあるということなので、物事は単純化して考えましょう。

plain

1/usr/home/hogehoge

 に

php

1<?php 2$dir = './work'; 3 4if (!file_exists($dir)) 5{ 6 var_dump($dir); 7 mkdir($dir, 0777, true); 8} 9?>

を作成して実行してみました。

plain

1$ ls 2$ php ソースファイル名.php 3string(6) "./work" 4$ ls 5work

となりました。
環境は FreeBSD ですが、基本的には MacOS も FreeBSD も同じはず。
となると、OTN さんのおっしゃっているように、ディレクトリのパスのどこかに問題があるのでは?

投稿2018/08/22 05:19

編集2018/08/22 06:20
showkit

総合スコア1638

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bitcoiner2045

2018/08/22 05:41

drwxrwxrwx 3 ■■■■ staff 96 8 22 11:50 ★★★★(ディレクトリ)でフルパーミッションにしていますので、全てx権限があります。しかしerrorが出る状態です。
bitcoiner2045

2018/08/22 06:47

追記ありがとうございます。試して見ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問