2017-08-11 19 views
0

curlで実行ファイルをダウンロードするPHPスクリプトを作成しようとしています。これまではファイルをダウンロードできましたが、ダウンロード後にファイルは実行可能ではありません(つまり、php wp-cli.pharを実行しても何も起こりません)。これがセキュリティ上のリスクを防ぐために期待される動作であることを認識していますので、ダウンロードしたファイルを実行可能ファイルとして扱うようにするにはどうすればよいですか?コマンドラインから同等のコマンドは次のとおりですcurl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar実行ファイルをphpとcurlでダウンロード

これは、PHPスクリプトで上記のコマンドを実装しようとする私のコードですが、結果のファイルが実行可能ではありません。

set_time_limit(0); 
$fp = fopen ('./wp-cli.phar', 'w+'); 
$ch = curl_init('https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar'); 
curl_setopt($ch, CURLOPT_TIMEOUT, 50); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_exec($ch); 
curl_close($ch); 
fclose($fp); 

EXTRA INFORMATION
エラーを再現するには、上記の内容のa.phpというファイルを作成します。次にphp a.phpを実行してからphp wp-cli.phar --info

+2

「何も起こらない」と言ったら、どういう意味ですか?あなたはそのコマンドを実行しても何の出力も得られませんか?ファイルのアクセス権と所有者/グループを確認してください。 'php'を実行しているユーザも実行可能ですか?ダウンロードしたファイルは、実行しようとしているのと同じ相対ディレクトリにありますか? – Andy

+1

ファイルを作成しても自動的に実行可能にならないので、許可を変更する必要があります(LinuxのCLIで 'chmod 775 filename')。 –

+0

@Andy「何も起こりません」とは、出力が得られないということです。空のコマンド。ファイルのパーミッションは '-rw-r - r - 'で、私は所有者です。はい、両方のスクリプト(あなたが見るものとダウンロードしたもの)を同じディレクトリから実行しています。両方ともそこにあります。 @NigelRenまだ同じです。私は前にphpの 'chmod'関数を使って試してみました。 –

答えて

0

を実行してください。これは現在、以下のコードを試してください。これは現在、URLからファイルをダウンロードするために使用しています。

public function downloadFile($url, $filepath){ 
    $fp = fopen($filepath, 'w+'); 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
    curl_setopt($ch, CURLOPT_FILE, $fp); 
    curl_exec($ch); 
    curl_close($ch); 
    fclose($fp); 

    return (filesize($filepath) > 0)? true : false; 
} 
+0

私はちょうど、共有のおかげで、あなたの関数をテストしましたが、このように作成されたファイルと同じ動作は 'downloadFile( 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages /phar/wp-cli.phar '、' wp-cli.phar ');' –

+0

@GeorgeDimitriadis私は元の投稿に答えました。それはダウンロード方法とは関係ありません。それはあなたがそれを実行することができないという事実と関係があります - ファイルに対して実行可能なアクセス権はありません。 – Andy

関連する問題