私たちはホスティング企業を変更しましたが、ssh2が動作していた場所はもう機能しません。新しいサーバーでssh2
を有効にし、allow_url_fopen
を有効にしました。SSH2が新しいサーバで動作しない
唯一の違いは、古いサーバーがPHP 5.4.45
を使用し、新しいサーバーがPHP 5.6.28
を使用していることです。
ただし、次のエラーが表示されるようになりました。 Could not open remote file: ssh2.sftp://Resource id #337/my/directory/file.txt
ここでは、私のコードの例です:
再び$remote_host = "myhostinfohere";
$remote_port = 22;
$remote_user = "myuser";
$remote_pass = "mypassword";
$remote_dir = "/my/directory/";
$remote_file = 'file.txt';
try {
$remote_conn = ssh2_connect($remote_host, $remote_port);
} catch (Exception $e) {
die("could not connect to ".$remote_host);
}
try {
ssh2_auth_password($remote_conn, $remote_user, $remote_pass);
} catch (Exception $e) {
die("Password failed on ".$remote_host);
}
$sftp = ssh2_sftp($remote_conn);
$fetch_string = "ssh2.sftp://$sftp" . $remote_dir . $remote_file;
//If I add this it says it doesn't exists for some reason even though I can see the file if I log in remotely.
$fileExists = file_exists($fetch_string);
if (!$fileExists) {
die('File does not exist');
}
$stream = fopen($fetch_string, 'r');
if (!$stream) {
die("Could not open remote file: " . $fetch_string . "\n");
}
、この同じコードは、古いサーバー上で動作しますが、新しいサーバー上にありません。私は何が欠けていますか? ssh2_scp_recv()
でサーバにファイルを簡単にコピーできるので、fopen()
機能で何が起こっているのか分かりません。
同じユーザーを使用して手動で認証したり、新しいサーバーを渡すことはできますか? /my/directory/file.txtは新しいサーバーに存在しますか?適切な権限を持っていますか? – ivanivan
私は手動で認証でき、接続は機能します。私が新しいサーバーと言うとき、私はそのスクリプトがどこにあるのかを、他のサーバーを呼び出すために使用することを意味します。ファイルが存在する他のサーバーはまったく変更されていません。上記のスクリプトをホストしていたサーバー。 – MagentoMan
ファイアウォールを無効にして、その効果(SSHスクリプトがあるサーバー)を確認します。ああ、あなたは既にSSH要求を正しく行うことができますか?もしそうなら、それは@ivanivanが述べたようなファイルアクセス権の問題かもしれません。 – webDev