Autor | Zpráva | ||
---|---|---|---|
malej Profil |
#1 · Zasláno: 3. 1. 2011, 18:36:29
Co dělám špatně?
<?php if(! $connection = ssh2_connect("127.0.0.1", 22)) { die("Chyba spojeni!"); } if (ssh2_auth_password($connection, "user", "pass")) { echo "Prihlaseni probehlo v poradku!\n"; } else { die("Prihlaseni nebylo uskutecneno v poradku!\n"); } $sftp = ssh2_sftp($connection); if (!is_dir("ssh2.sftp://$sftp/uploaded")) { mkdir("ssh2.sftp://$sftp/uploaded", 0775) or die("Nepodarilo se vytvorit"); } else { echo "\nAdresar existuje"; } ?> Pokaždé vypíše "Nepodarilo se vytvorit". Jednak v prvním kroku nedetekuje jestli tam složka je nebo ne a také žádnou nevytvoří. |
||
Radek Cvek Profil |
#2 · Zasláno: 3. 1. 2011, 19:40:01
a toto by nešlo?
if (!file_exists("ssh2.sftp://$sftp/uploaded")) ... |
||
Alphard Profil |
#3 · Zasláno: 3. 1. 2011, 21:12:44
malej:
„a také žádnou nevytvoří“ Zkoušel jste přímo ssh2_sftp_mkdir()? Třeba to pomůže zjistit, kde hledat problém. |
||
malej Profil |
#4 · Zasláno: 3. 1. 2011, 21:54:40
Alphard:
přes tuhle to jde, ale ten if pořád nejde |
||
malej Profil |
#5 · Zasláno: 4. 1. 2011, 10:35:28
Radek Cvek:
Zkoušel jsem, nefunguje. Problém bude pravděpodobně v té cestě, jenže takhle je popsána v manuálu. |
||
Alphard Profil |
#6 · Zasláno: 5. 1. 2011, 23:01:09
malej:
„Problém bude pravděpodobně v té cestě“ Vypadá to tak, ale nemohu najít žádnou chybu. Máte povolený výpis chyb? Žádné jiné vodítko? Zkusil jste vypsat návratovou hodnotu file_exists()? Vrací false, nebo něco jiného? Funkci ssh2_sftp() byste mohl zkusit obejít pomocí Example #1 Opening a stream from an active connection, resp. přímo zadáním do adresy, dle Options na stejné stránce. Na Can't get SFTP to work in PHP autor dotazu v editu píše, že mu problémový kód funguje při připojení na jiný server. Jestli máte možnost připojit se jinam, můžete to také zkusit. |
||
malej Profil |
#7 · Zasláno: 5. 1. 2011, 23:42:02 · Upravil/a: malej
Alphard:
V logu apache nic a chyby by to mělo vypisovat normálně. Po zadání echo file_exists("ssh2.sftp://$sftp/uploaded/"); Přímé zadání adresy také nepomáha (Example #1 Opening a stream from an active connection:Options) Jinak ssh2_sftp_mkdir fungovala takže spojení je ok. Jediné co nejde je prefix ssh2.sftp://$sftp/ (resp. ssh2.sftp://user:pass@example.com:22/path/to/filename). Tohle jsem našel v auth.log po vykonání skriptu. Jan 5 23:35:44 malej-laptop sshd[6218]: Accepted password for sshtest from 127.0.0.1 port 40907 ssh2 Jan 5 23:35:44 malej-laptop sshd[6218]: pam_unix(sshd:session): session opened for user sshtest by (uid=0) Jan 5 23:35:44 malej-laptop sshd[6332]: subsystem request for sftp Jan 5 23:35:44 malej-laptop sshd[6332]: Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) Jan 5 23:35:44 malej-laptop sshd[6218]: pam_unix(sshd:session): session closed for user sshtest ...Ale je to tak zřejmě správně (stejný log po zakomentování části s prefixem.) Kdyby existovala funkce file_exists pro ssh2-php nemusel bych prefix použít. Už začínám být zoufalý. |
||
Davex Profil |
#8 · Zasláno: 7. 1. 2011, 20:52:35 · Upravil/a: Davex
malej:
„Po zadání echo file_exists("ssh2.sftp://$sftp/uploaded/"); je výstup prázdný.“
Zkus přetypovat výstup funkce: echo (int) file_exists("ssh2.sftp://$sftp/uploaded/"); Pokud nemáš posunutý kořen, tak možná uživatel user nemá právo vytvářet adresář /uploaded. Jaký adresář se vypíše s tímto kódem? if ($dir = scandir("ssh2.sftp://$sftp/")) { echo implode("<br>\n", $dir); } Bez problémů vytvořím adresář takto: mkdir("ssh2.sftp://$sftp/home/muj/web/uploaded", 0775); |
||
malej Profil |
#9 · Zasláno: 9. 1. 2011, 19:24:27
echo (int) file_exists("ssh2.sftp://$sftp/uploaded/"); if ($dir = scandir("ssh2.sftp://$sftp/")) { echo implode("<br>\n", $dir); } - Vypíše root hlavního disku, ale home adresář je nastavený do rootu projektu na kterém pracuji. V /etc/passwd je to nastaveno takto: sshtest:x:1003:1003::/media/sda3/Projects/nabytekkolarik/:/bin/sh Když se přihlašuji v konzoli tak mě to skutečně vypisuje home adresář který jsem nastavil v /etc/passwd. Proč to nefunguje v php stejně? |
||
Davex Profil |
#10 · Zasláno: 9. 1. 2011, 21:47:48
malej:
„Proč to nefunguje v php stejně?“ Ten phpéčkový klient to pravděpodobně neumí, protože je to zatím vývojová betaverze 0.11.2. Pošli autorům sponzorský dar a požádej je o doplnění podpory přechodu do domovského adresáře. |
||
malej Profil |
#11 · Zasláno: 11. 1. 2011, 21:19:49
Davex:
Vyřešeno pomocí ChrootDirectory v /etc/ssh/sshd_config. Nejde o to že tam má přejít, ale o to že ignoruje nastavení výchozího adresáře. Každopádně ještě jednou velký dík za nápad se scandir. :) |
||
Časová prodleva: 12 let
|
0