2011-10-19 15 views
13

Tôi cần tệp từ máy chủ đến máy chủ khác (tôi sở hữu cả hai) bằng cách sử dụng PHP. Tôi có kịch bản sau đây:PHP Exec SCP không sao chép tệp vào máy chủ từ xa

tôi nhận được lỗi này:

Disallowed system call: SYS_pipe 

lỗi đó là gì? và làm thế nào tôi có thể sửa nó?

+1

Tôi ghét phải là đội trưởng rõ ràng ở đây , nhưng 'SYS_pipe' không được phép và để khắc phục lỗi, bạn cần cho phép. – Cyclone

+1

Lần truy cập đầu tiên trên Google là nhận xét SO này: http://stackoverflow.com/questions/3964766/ensuring-user-input-code-does-not-damage-server-when-executed - vì vậy có thể đó là một exec bị cấm. Btw, xem [ssh2_scp_send] (http://php.net/manual/en/function.ssh2-scp-send.php) thay thế. – mario

+0

@ Cơn bão: Ở đây ... Bạn là một quý ông và một học giả. Tôi có vẻ là Captain Obvious :) – TigOldBitties

Trả lời

12

Môi trường PHP không cho phép exec trên máy chủ của bạn.

+0

và làm cách nào tôi có thể kích hoạt nó? Tôi có cần cập nhật apache không? hoặc php? –

+0

nếu nó là máy chủ của bạn kiểm tra php.ini disable_functions ... nếu nó là một máy chủ lưu trữ khó khăn noogies tôi sẽ đặt cược lương hưu của tôi họ sẽ không kích hoạt nó. – TigOldBitties

+0

cảm ơn, tôi đã tìm thấy nó –

1

Đây là khá muộn, tôi biết, nhưng bạn có thể có may mắn hơn với phpseclib's pure PHP SCP implementation:

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

Ví dụ về làm thế nào để sử dụng nó:

<?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)); 
?>