XAMPP1.7.1を使用し、社内のWEB SERVERとして運用しています。
XAMPPのバージョンアップ(XAMPP5.6.15)を行ったところ下記問題が発生しました。
PHPプログラム内で別のサーバの共有ホルダを確認するために
file_existsを使用しているのですが
特定の共有ホルダ名のみ認識できません。(5C問題の漢字は含まれていません)
アドバイスをお願いいたします。
認識できない共有ホルダ名
//DATASERVER/輸出
//DATASERVER/営業
認識できる共有ホルダ名
//DATASERVER/管理
//DATASERVER/製造
//DATASERVER/管理/輸出/営業
$dir='//DATASERVER/輸出/';
if (file_exists( $dir )==true)
echo "ファイルが存在する!!(".$dir.')';
else
echo "ファイルが存在しない!!(".$dir.')';
$dir='//DATASERVER/営業/';
if (file_exists("//KHOST1/輸出/")==true)
echo "ファイルが存在する!!(".$dir.')';
else
echo "ファイルが存在しない!!(".$dir.')';
$dir='//DATASERVER/管理/輸出/営業/';
if (file_exists( $dir )==true)
echo "ファイルが存在する!!(".$dir.')';
else
echo "ファイルが存在しない!!(".$dir.')';
No.8ベストアンサー
- 回答日時:
すみません。
昨日、Apacheの権限の問題だと確信していたのですが、ふと気になったことがあり今日調べて見ました。
Apacheを経由しないでPHPから直接アクセスしたらどうなるか?
と言うことです。
結果、元のように「輸出」「営業」フォルダにはアクセス出来ませんでした。
さらに詳しく調べた結果、「出」「営」が含まれているとアクセス出来ない事がわかりました。
単純にフォルダを作成し、共有してアクセスするだけで「アクセスを拒否」されます。
権限の問題でも無く、フォルダの実際の位置も関係ありませんでした。
「d:\営業」を作成し、「営業」を共有し「\\localhost\営業」としてアクセスすると拒否される。
「d:\zzz\営業」を作成し、「営業」を共有し「\\localhost\営業」としてアクセスすると拒否される。
「d:\zzz\営業」を作成し、「zzz」を共有し「\\localhost\zzz\営業」としてアクセスすると拒否されない。
どうやら、「\\コンピューター名\フォルダ名」とした場合におかしな動作をするようです。
そこで色々調べてみたのですが、対処方法が全く見つかりませんし、不具合情報としても上がっていませんでした。
また、
>ファイルが存在する!!(//10.1.75.76/C$/輸出)JPG
>ファイルが存在する!!(//10.1.75.76/C$/営業/)JPG
>ファイルが存在する!!(//10.1.75.74/D$/輸出)JPG
>ファイルが存在する!!(//10.1.75.74/D$/営業/)JPG
管理共有を使うとアクセス出来たようですが、個人的には「管理共有」を使うのもあまり良くないと思っています。
なので、
任意のフォルダを作成し、そのフォルダを共有する。
アクセスするフォルダはその中に作成する。
では、ダメなのでしょうか?
1:C:\docsフォルダを作成。(任意の半角英字)
2:「docs」フォルダを共有する。
3:「docs」フォルダの中に、「輸出」「営業」フォルダを作成する。
4:「//10.1.75.76/docs/輸出」「//10.1.75.76/docs/営業」でアクセスする。
根本的な原因がわからないのでスッキリしないのですが、セキュリティーなども考慮するとこれ以上なにかをやってもセキュリティーを甘くしてしまう危険性もあるので、この方法がベストでは無いかと判断しました。
検討してみてください。
gao57830様
いろいろと調査していただきありがとうございました。
ご提案の内容については検討してみますが会社内のデータ共有サーバーの為簡単に変更するのは難しいと思います。
通常、フォルダー名は日本語を使用せずにアルファベットを使用する方が良いと記載されているサイトもありましたが今後はそのようにしていきたいと思っています。
最初に記載した通りXAMPP1.7.1を使用した場合は今回のトラブルは無く、現状もそのシステムを使用しております。Apache2.2.11以降、PHP5.2.9以降で何か変更がなされたのか、または問題ないのが問題で修正されたのかもしれません。今回の問題をネットで検索するのですが同様のドラブル情報を見つける事が出来ずに「教えて!goo」に相談したしだいです。最初は私の無知による簡単な設定ミスかと思っていましたが、gao57830様でも再現したことを伺って残念ですが安心しました。いろいろと私の知らないアプローチの方法を教えていただきありがとうございました。もし新しい情報がありましたらご連絡ください。ありがとうございました。
No.7
- 回答日時:
>ファイルが存在する!!(//10.1.75.76/C$/営業/)JPG
これは、「管理共有」と呼ばれるもので、実際には「C:\営業」でアクセスしているのとほぼ同じ事になります。
それに対し、
>ファイルが存在しない!!(//10.1.75.76/営業/)JPG
これは、ネットワーク経由でアクセスしている事になります。
しかし、
>ファイルが存在しない!!(//10.1.75.74/D$/営業/)JPG
この場合は、コンピューターが異なるので管理共有でもネットワークアクセスとなります。
フォルダの権限に問題が無い場合、Apacheの権限はどうでしょう?
Apacheをサービスに登録してあると思いますが、その際のアカウントを確認してみてください。
通常、サービスに登録された場合のアカウントは、「Local System」となります。
これを、現在ログインしているアカウントに変更してみてください。
また、ファイアーウォールでポート番号か「httpd.exe」は通過するように設定してありますよね?
gao57830様
毎回、貴重なアドバイス感謝しております。
ご指導いただきましたApacheのログオンアカウントを確認したところ
Server PCのログインユーザー以外のユーザアカウントが設定されていました。そこで「Local System」変更すると認識されていたフォルダも認識されなくなりました。そこでログイン中のユーザアカウントを設定したところ下記の様に改善されました。この状況であればPHPのソースファイルを変更DataServerのフォルダ位置を追加する事で使用可能となります。
サービス登録を
ファイルが存在しない!!(//10.1.75.76/輸出)JPG
ファイルが存在しない!!(//10.1.75.76/営業/)JPG
ファイルが存在する!!(//10.1.75.76/C$/輸出)JPG
ファイルが存在する!!(//10.1.75.76/C$/営業/)JPG
ファイルが存在しない!!(//10.1.75.74/輸出)JPG
ファイルが存在しない!!(//10.1.75.74/営業/)JPG
ファイルが存在する!!(//10.1.75.74/D$/輸出)JPG
ファイルが存在する!!(//10.1.75.74/D$/営業/)JPG
ファイアーウォールについては無効に設定していますがその他に確認する内容はありますか?
宜しくお願い致します。
No.6
- 回答日時:
前回の結果から、PHPの問題では無くApacheの権限かネットワーク権限、フォルダの権限の問題ですね。
アクセス出来るフォルダと出来ないフォルダがあるので、フォルダの権限のような気がします。
フォルダの右クリックで、「共有」タブや「セキュリティ」タブの内容をアクセス出来るフォルダと出来ないフォルダを良く比較してみてください。
gao57830様
アドバイスありがとうございます。
前回報告いたしました下記内容についてもフォルダ権限の問題なのでしょうか?
>サーバーのフォルダの位置を追加する事で少し改善されました。
>改善されたのはApache、PHPがインストールされているPC(10.1.75.76)側です。
>ファイルが存在しない!!(//10.1.75.76/輸出)JPG
>ファイルが存在しない!!(//10.1.75.76/営業/)JPG
>ファイルが存在する!!(//10.1.75.76/C$/輸出)JPG
>ファイルが存在する!!(//10.1.75.76/C$/営業/)JPG
「共有」タブや「セキュリティ」タブの内容を確認しても差異はありません。他の方法で確認する方法はありませんか?
アドバイスをお願いいたします。
No.5
- 回答日時:
当初は、「日本語エンコード」の問題かと思っていましたが、不安定に日本語を認識していないのが疑問でした。
前回の「mkdir()」で「No such file or directory」のエラーが返ってくるのが原因のように感じたので、そのあたりを調べてみました。
例えば、「/製造」フォルダが無い状態で、「/製造/輸出」を作ろうとした場合にこのエラーになるようです。
そこで思ったのですが、サーバーのフォルダは「共有」したフォルダですよね?
サーバーの実際のフォルダの位置が認識するものと認識しないもので異なっている事はありますか?
例えば、「//10.1.75.76/輸出」「//10.1.75.76/営業」フォルダですが、
サーバーの実際のフォルダの位置を管理者共有を使って認識させるとどうなるでしょうか?
サーバーのフォルダの位置が「C:\data\営業」だったとすると、
$dir='//10.1.75.76/C$/data/営業';
if (file_exists( $dir )==true)
echo "ファイルが存在する!!(".$dir.')';
else
echo "ファイルが存在しない!!(".$dir.')';
※予めエクスプローラーで「//10.1.75.76/C$/data/営業」にアクセス出来る事を確認してから行ってください。
また、解決しない場合、以下も試してみてください。
$dir='//10.1.75.76/営業';
mkdir( $dir, 0777, TRUE );
if (file_exists( $dir )==true)
echo "ファイルが存在する!!(".$dir.')';
else
echo "ファイルが存在しない!!(".$dir.')';
※これで成功した場合、本来の「営業」フォルダとは別の場所にフォルダが作成されています。
gao57830様
アドバイスありがとうございます。
サーバーのフォルダの位置を追加する事で少し改善されました。
改善されたのはApache、PHPがインストールされているPC(10.1.75.76)側です。
ファイルが存在しない!!(//10.1.75.76/輸出)JPG
ファイルが存在しない!!(//10.1.75.76/営業/)JPG
ファイルが存在する!!(//10.1.75.76/C$/輸出)JPG
ファイルが存在する!!(//10.1.75.76/C$/営業/)JPG
データサーバーとして実運用しているPC(10.1.75.74)側は改善できません。
ファイルが存在しない!!(//10.1.75.74/輸出)JPG
ファイルが存在しない!!(//10.1.75.74/営業/)JPG
ファイルが存在しない!!(//10.1.75.74/D$/輸出)JPG
ファイルが存在しない!!(//10.1.75.74/D$/営業/)JPG
サーバーのフォルダは共有したフォルダです。
マイコンピュータ画面で\\10.1.75.76または,\\10,1,75,74を入力すると
輸出、営業の共有フォルダが表示されます。
>$dir='//10.1.75.76/営業';
>mkdir( $dir, 0777, TRUE );
>if (file_exists( $dir )==true)
を実行してみましたが結果は下記のように表示されました。
Warning: mkdir(): Invalid argument in C:\www\Apache24\htdocs\test.php on line 240
ファイルが存在しない!!(//10.1.75.74/営業)
アドバイスをお願いいたします。
No.4
- 回答日時:
>//10.1.75.76/管理/
>//10.1.75.76/製造/
>//10.1.75.76/製造/輸出/
これらは、file_existsでも認識できたフォルダですね。
>File exists(ファイルが存在します)
なので、正常なメッセージです。
>//10.1.75.76/営業/
>//10.1.75.76/輸出/
このフォルダは、file_existsでも認識しなかったフォルダですね。
>No such file or directory(そのようなファイルやディレクトリは存在しません)
となっています。
これがおかしいですね。フォルダを作成しようとしているのに存在しないとは?
>$dir='//10.1.75.76/輸出';
これでもダメだったのですか。
私のパソコンには、XAMPP(7.0.0)がインストールされているのですが、「C:\輸出」フォルダを作成し、
$dir='//localhost/C$/輸出/';
if (file_exists( $dir )==true)
echo "ファイルが存在する!!(".$dir.')<BR>';
else
echo "ファイルが存在しない!!(".$dir.')<BR>';
これを実行すると、「ファイルが存在する」となりました。
フォルダを削除して、mkdirを実行するとフォルダが作成されますし、フォルダがある状態で実行すると「 File exists」になり、正常に動作します。
やはり、「No such file or directory」が異常ですね。
$dir='//127.0.0.1/輸出/';
$dir=mb_convert_encoding($dir, 'CP932', 'SJIS');
if (file_exists( $dir )==true)
echo "フォルダ作成成功!!(".$dir.')';
else
echo "フォルダ作成失敗!!(".$dir.')';
これでもダメでしょうか?
gao57830様
アドバイスありがとうございます。
ご指導いただきました内容
$dir=mb_convert_encoding($dir, 'CP932', 'SJIS');
を実施しましたが状況に変化はありません。
そちらのシステムでは問題ないとの事ですね。
現在使用しているXAMPP1.7.1では問題ないのですが
xampp1.7.2以降、いくつかのバージョンを確認しましたが
全てすべて同じように特定の漢字フォルダが認識できません。
xampp7.0.0は未確認ですが
同じ漢字が入っている下記フォルダは認識できることから
漢字フォルダ名の問題でもないように思います。
//10.1.75.76/製造/輸出/
ただ、コンピュータ名の次のフォルダ名の漢字によって認識されたりされなかったりしているのではないかと感じています。
アドバイスをお願いいたします。
No.3
- 回答日時:
>mkdir c:\輸出
>mkdir c:\営業
>どちらも ”既に存在します。”と表示されます。
いえ、そういう意味ではなく、PHPからネットワーク経由で作成したらどうなるかと言うことです。
つまり、
$dir='//DATASERVER/輸出/';
if (mkdir( $dir )==true)
echo "フォルダ作成成功!!(".$dir.')';
else
echo "フォルダ作成失敗!!(".$dir.')';
file_existsで認識しないので、どこかで文字化けなどを起こしているのが原因だとすれば、mkdirが成功し文字化けしたフォルダが作成される。
文字化けなどが発生していなければ、mkdirは失敗しフォルダは作成されない。
この場合、file_existsに問題がある。
このように、file_exists自体に問題があるのか、別のところに問題があるのか切り分けをしたいと言うことです。
※サーバーに不要なフォルダが作成されてはまずい場合がありますので、自身のパソコンでテストしてみてはどうでしょうか?
$dir='//127.0.0.1/輸出/';
if (mkdir( $dir )==true)
echo "フォルダ作成成功!!(".$dir.')';
else
echo "フォルダ作成失敗!!(".$dir.')';
また、作成出来たら認識出来るかも試してみてください。
$dir='//127.0.0.1/輸出/';
if (file_exists( $dir )==true)
echo "ファイルが存在する!!(".$dir.')';
else
echo "ファイルが存在しない!!(".$dir.')';
追記
関係ないとは思いますが、
$dir='//127.0.0.1/輸出/';
↓
$dir='//127.0.0.1/輸出'; ←最後の'/'を取る。
でも同じでしょうか?
gao57830様
早速のアドバイスありがとうございます。
phpでmkdirを実行した結果、下記ようになりました。
Warning: mkdir(): No such file or directory in C:\www\Apache24\htdocs\test.php on line 168
フォルダ作成失敗!!(//10.1.75.76/営業/)JPG
Warning: mkdir(): No such file or directory in C:\www\Apache24\htdocs\test.php on line 176
フォルダ作成失敗!!(//10.1.75.76/輸出/)JPG
Warning: mkdir(): File exists in C:\www\Apache24\htdocs\test.php on line 184
フォルダ作成失敗!!(//10.1.75.76/管理/)JPG
Warning: mkdir(): File exists in C:\www\Apache24\htdocs\test.php on line 192
フォルダ作成失敗!!(//10.1.75.76/製造/)JPG
Warning: mkdir(): File exists in C:\www\Apache24\htdocs\test.php on line 200
フォルダ作成失敗!!(//10.1.75.76/製造/輸出/)JPG
この結果から”営業”、”輸出”は文字化けなのでしょうか?
また
$dir='//10.1.75.76/輸出';にしても結果に変化はありません。
No.2
- 回答日時:
間違っているとは思えませんが・・・。
サーバーの文字コードとPHPの文字コードは同じですよね?
勝手なことは出来ないかもしれませんが、例えば
>認識できない共有ホルダ名
>//DATASERVER/輸出
このフォルダを、「mkdir」で作成してみたらどうなるか?
戻り値が、Trueか?Falseか?
を試してみると何かわかるかも?
gao57830様
アドバイスありがとうございます。
mkdir c:\輸出
mkdir c:\営業
どちらも ”既に存在します。”と表示されます。
念のため別のサーバに同じフォルダをc:\の下に作成して確認してみましたが結果は同じです。
サーバーのosはwindows server 2012です。
認識できない共有ホルダ名
//10.1.75.76/輸出
//10.1.75.76/営業
認識できる共有ホルダ名
//10.1.75.76/管理
//10.1.75.76/製造
//10.1.75.76/製造/輸出/
アドバイスをお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンHDDごとの暗号化(見ら...
-
フォルダ名・ファイル名の書き...
-
Cドライブ直下にコピーってどう...
-
よく分からない
-
Windows7で保存したファイルが...
-
メールの添付ファイル名が長す...
-
解凍後の.zipファイルは消して...
-
写真(jpgファイル)をトリ...
-
拡張子をtxtからdatに
-
ファイルを閉じても開いている...
-
Geek Uninstaller と Revo Unin...
-
Excelで「同じ名前のファイルが...
-
バッチファイルを作成して、ア...
-
4.7GB以上のデータをDVDに書き...
-
.svn-baseというファイルが消え...
-
【初心者です】izhというファイ...
-
エクスプローラーに音楽ファイ...
-
Outlook2010 データ (.ost)の復元
-
マックのレジストリ
-
破損したISOのファイルを修復す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
よく分からない
-
Macでフォルダを添付できないで...
-
メールダウンロードフォルダの場所
-
パソコンHDDごとの暗号化(見ら...
-
Cドライブ直下にコピーってどう...
-
お気に入りを整理したいのですが…
-
DRVSTOREの役割を教えて下さい。
-
iTunes2のライブラリをOS9とOS ...
-
ホームディレクトリ直下のフォ...
-
外付けMOドライブへの「ファイ...
-
右クリック、新規作成にメモ帳...
-
アップルメニューの中からMacOS...
-
ブックマークの順番を最新順に...
-
OUTLOOKで「You've got mail」...
-
スタート→プログラムの整理方法
-
iMovie Sound Effects データ保...
-
Windows10でのファイルの並び替...
-
mac デスクトップのファイル名...
-
Macで今あるファイルの連番(ペ...
-
イラレ 3D Bevels.aiはどこ?
おすすめ情報

