2011-10-19 12 views
13

PHPを使用してサーバから別のサーバにファイルが必要です(私はその両方を所有しています)。私は次のスクリプトがありますPHP Exec SCPはファイルをリモートサーバにコピーしません

を私はこのエラーを取得する:

Disallowed system call: SYS_pipe 

そのエラーとは何ですか?どうすれば修正できますか?

+1

私はここに明らかキャプテンであることを憎みますしかし、 'SYS_pipe'は許可されず、エラーを修正するには、それを許可する必要があります。 – Cyclone

+1

Googleで最初にヒットしたのはこのSOのコメントでした:http://stackoverflow.com/questions/3964766/ensuring-user-input-code-does-not-damage-server-when-executed-禁止されている可能性が高いexecです。 Btwについては、[ssh2_scp_send](http://php.net/manual/en/function.ssh2-scp-send.php)を参照してください。 – mario

+0

@Cyclone:ここに...あなたは紳士で学者です。私はキャプテン明白なようだ:) – TigOldBitties

答えて

12

PHP環境ではサーバー上でexecを実行できません。

+0

と私はそれを可能にすることができますか?私はApacheを更新する必要がありますか?またはPHP? –

+0

あなたのサーバのチェックであればphp.ini disable_functions ...それはホストされたサーバであるならば厳しいnoogies私は彼らがそれを有効にしない私の年金を賭けるでしょう。 – TigOldBitties

+0

ありがとう、私はそれを見つけた –

1

これは私が知っている、しかし、あなたはphpseclib's pure PHP SCP implementationとのより良い運を持っているかもしれませんが、後半ちょっとです:それを使用する方法の

https://raw.github.com/phpseclib/phpseclib/master/phpseclib/Net/SCP.php

例:

<?php 
include('Net/SCP.php'); 
include('Net/SSH2.php'); 

$ssh = new Net_SSH2('www.domain.tld'); 
if (!$ssh->login('username', 'password')) { 
    exit('bad login'); 
} 

$scp = new Net_SCP($ssh); 
$scp->put('abcd', str_repeat('x', 1024*1024)); 
?>