2

重複の可能性:
PHP-別のサーバー上のopendir

このようなもの:

opendir(http://super.cdn.com/running_order_image/sale/587/)

opendir、Rackspace CloudFilesAkamaiバケットの内容を確認するために使用されています。

私はこのような構造をループしています

587/
587/587_rubyred
587/587_rubyred/front.jpg
587/587_rubyred/back.jpg

パーツを返品しようとしてい587_rubyredます。基本的に、MySQLクエリは587と834およびその他の番号をループし、ディレクトリでそれらの番号を確認して、最初のサブフォルダを返します。

4

5 に答える 5

3

これは不可能です。ほとんどのサーバーではディレクトリリストが無効になっており、ディレクトリリストを送信しません。opendirはローカルディレクトリ用です。

PHP-別のサーバー上のopendir

ftpなどでアクセスできます。

于 2012-10-09T12:36:46.313 に答える
2

いいえ。URLにディレクトリの概念はありません。

URLはサーバーのファイルシステム上のディレクトリにマップされる場合がありますが、そのマッピングはHTTPによって公開されません。

http://example/running_order_image/sale/587/サーバー上のディレクトリ内のすべてへのリンクを含むHTMLドキュメントが提供される場合がありますが、他のリソースと同じようにアクセスし、HTMLを解析してそれらのリソースへのURLを取得する必要があります。

于 2012-10-09T12:36:58.080 に答える
2

ラックスペースクラウドファイルに接続する場合は、https://github.com/rackspace/php-cloudfilesにあるAPIを使用することをお勧めします

$auth = new CF_Authentication('<RACKSPACELOGIN>','<RACKSPACEKEY>');
$auth->authenticate();
$conn = new CF_Connection($auth);
$cloudFolder = $conn->get_container('<RACKSPACECONTAINER>');    
$cloudImages = $cloudFolder->get_objects();

foreach($cloudImages as $image)
{
  echo '<li>' . $image->name . '</li>';
}

編集:その後、次のことを実行できるようになります

$cloudImages = $cloudFolder->get_objects(0,NULL,NULL,'587/587_rubyred');
于 2012-10-09T12:46:29.020 に答える
0

スペックを見てみませんか?

http://nl3.php.net/manual/en/function.opendir.php

変更ログの下を見てください:

4.3.0パスは、ディレクトリリストをサポートする任意のURLにすることもできますが、PHP 4ではfile://URLラッパーのみがこれをサポートします。

したがって、これが機能するかどうかは、アプローチするサーバーによって異なります。私のサーバーはそれを許可しないことを知っています。;-)

于 2012-10-09T12:38:02.673 に答える
0

PHPでFTPを使用してみてください。これにより、サーバーにリモートで接続できるようになります。もちろん、FTP経由での接続が許可されている場合に限ります。

于 2012-10-09T12:40:24.823 に答える