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
「何も起こらない」と言ったら、どういう意味ですか?あなたはそのコマンドを実行しても何の出力も得られませんか?ファイルのアクセス権と所有者/グループを確認してください。 'php'を実行しているユーザも実行可能ですか?ダウンロードしたファイルは、実行しようとしているのと同じ相対ディレクトリにありますか? – Andy
ファイルを作成しても自動的に実行可能にならないので、許可を変更する必要があります(LinuxのCLIで 'chmod 775 filename')。 –
@Andy「何も起こりません」とは、出力が得られないということです。空のコマンド。ファイルのパーミッションは '-rw-r - r - 'で、私は所有者です。はい、両方のスクリプト(あなたが見るものとダウンロードしたもの)を同じディレクトリから実行しています。両方ともそこにあります。 @NigelRenまだ同じです。私は前にphpの 'chmod'関数を使って試してみました。 –