2016-04-19 14 views
1

PHP glob()で奇妙な状況が発生し、誰かが遭遇したかどうか疑問に思っています。この問題はここでは広すぎるかもしれませんが、とにかく試してみてください。PHP glob()でワイルドカードを使用する際の問題

私は次のことを実行しているよ:

Distributor ID: Ubuntu 
Description: Ubuntu 14.04.4 LTS 
Release:  14.04 
Codename:  trusty 

PHP 5.6.20-1+deb.sury.org~trusty+1 (cli) 
Copyright (c) 1997-2016 The PHP Group 
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies 
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies 
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans 

は私のglob関数は、使用する前に働いていた:

$images = glob($path . '/' . $id .'.*'); 

そして、それが突然動作を停止。私は実際にサーバーや他のコードで何も変更していません。これらは私がちょうど

$images = glob($path . '/' . $id . '.{jpg,jpeg,png,gif}', GLOB_BRACE); //works 
$images = glob($path . '/*.jpg'); // doesn't work 
$images = glob($path . '/*'); // doesn't work 

は基本的に、私はワイルドカードを使用して、いつでもが、どんなに位置、スクリプトは(コマンドラインから実行しました)ただそこに座って何が起こるか見てみました異なるものです。エラーはありません。戻り値はありません。私は同じ結果を持つGlobIteratorを使ってみました。

私はPHPのアンインストールと再インストールを試みました。テストを実行するためにいくつかの一時ファイルを含む新しいディレクトリを作成しました。ディレクトリには約1000個のファイルがありますので、それはすべての時間がかかる(私はそれが1時間座ってしまった)。

だから、誰かがこの問題を解決する前に、あるいは解決策を知っているのだろうか?ワイルドカードが必要な場所ではglob()を使わないコードを書き直しているので、これは主に好奇心から外れています。

更新2 もう一度やっています。ワイルドカードを使用するときにハンギングします。 1100枚の画像がある私のディレクトリには3

// not working 
    var_dump(glob('/vagrant/biospex-2.0/storage/scratch/1-8c6b410c42da62d37e7aabc00a61e258/*')); 
    // not working 
    var_dump(glob('/vagrant/biospex-2.0/storage/scratch/1-8c6b410c42da62d37e7aabc00a61e258/*.jpg')); 
    // not working 
    var_dump(glob('/vagrant/biospex-2.0/storage/scratch/1-8c6b410c42da62d37e7aabc00a61e258/*.{jpg,jpeg,gif,png,tif,tiff}', GLOB_BRACE)); 
    // not working 
    var_dump(glob('/vagrant/biospex-2.0/storage/scratch/1-8c6b410c42da62d37e7aabc00a61e258/5715116ac46988ff1a8b4b8f.*')); 
    // working 
    var_dump(glob('/vagrant/biospex-2.0/storage/scratch/1-8c6b410c42da62d37e7aabc00a61e258/5715116ac46988ff1a8b4b8f.jpg')); 

アップデート:私は、以下のテストを実行しました。その数字を712に減らすと、globが配列を返します。 1つのイメージを追加すると、合計713がハングします。両者のサイズの違いは、それぞれ1.62GBと1.63GBです。 PHPの設定を変更しようとしましたが効果はありませんでした。 ディレクトリに小さなtxtファイルを追加しましたが、それでもハングアップしています。ここで何が起こっているのかは分かりません。 共有フォルダを持つWindowsマシン上でホストされているVirtualbox上でUbuntuを使用しています。 今のところ、イテレータを使用するだけです。

+0

'$ pathを出力しようとしましたか? '/ *' 'と' $ path。 '/ *。jpg' 'それが何になるかを見て手動で一致させようとします(bashや何かの' ls'で)? –

+0

それは非常に奇妙です。 '$ path'とは何ですか?アスタリスク自体や何かを含むような、特に変わったことはありますか? – Chris

+0

私はそれが違うのは、うまくいかない、 '$ id'を含んでいないということです。 –

答えて

0

解決策はありませんが、私は自分のローカルの開発サーバーをゼロから再構築しました。その後、glob()関数が動作し始めました。だから、物事を混乱させるようなことが起こったに違いない。