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を使用しています。 今のところ、イテレータを使用するだけです。
'$ pathを出力しようとしましたか? '/ *' 'と' $ path。 '/ *。jpg' 'それが何になるかを見て手動で一致させようとします(bashや何かの' ls'で)? –
それは非常に奇妙です。 '$ path'とは何ですか?アスタリスク自体や何かを含むような、特に変わったことはありますか? – Chris
私はそれが違うのは、うまくいかない、 '$ id'を含んでいないということです。 –