Autor | Zpráva | ||
---|---|---|---|
frodos Profil * |
#1 · Zasláno: 31. 3. 2014, 09:09:33
Dobrý den, nefunguje mi funkce copy. Na xammp mi fungovala normálně, ale tam byla verze php 5.8 nebo tak nějak a tady mám 5.3. Verzí to určitě nebude, ale proč mi to nechce fungovat je mi záhadou. Ví někdo čím to může být? Děkuji
|
||
Joker Profil |
#2 · Zasláno: 31. 3. 2014, 09:33:39
frodos:
„Ví někdo čím to může být?“ Nejspíš to bude rozbité. Nějaký bližší popis než „nefunguje“ by nebyl? |
||
frodos Profil * |
#3 · Zasláno: 31. 3. 2014, 09:49:46 · Upravil/a: frodos
Byl :-)
Ono to máká stejně jako na localu, ale fce copy se neprovádí. Myslel jsem, že mu vadí php a tak pomocí htaccess jsem překopal cestu, ale to nepomohlo, tak jsem vše vrátil do původního stavu. Začal jsem si říkat zda copy nemám vypnutou, ale používám jí i na jiné stránce a tam maká jak má. Tak nevím kde dělám chybu. $srcfile=').'&st='.$_GET['ro]http://www.domena.com/img_rotate.php?id='.intval($row["id"]).'&st='.$_GET['ro']; $dstfile=$_SERVER['DOCUMENT_ROOT'].'/img/album/'.intval($row["id"]).'/image.jpg'; mkdir(dirname($dstfile),0777,true); chmod($_SERVER['DOCUMENT_ROOT'].'/img/album/'.intval($row["id"]),0755); copy($srcfile,$dstfile); Nevím proč se puvodní nahradil, ale snad se tohle už vypíše správně. $srcfile=').'&st='.$_GET['ro]http://www.domena.com/img_rotate.php?id='.intval($row["id"]).'&st='.$_GET['ro']; $srcfile=').'&st='.$_GET['ro]http://www.domena.com/img_rotate.php?id='.intval($row["id"]).'&st='.$_GET['ro']; Něco mi to přepisuje. Samozřejmě, že to začíná http |
||
Tori Profil |
#4 · Zasláno: 31. 3. 2014, 10:10:07
A nezkoušel jste použít file_get/put_contents - nejdřív stáhnout obsah souboru a pak normálně uložit, jestli to taky zlobí (konkrétně načtení souboru)?
|
||
Chro Profil |
#5 · Zasláno: 31. 3. 2014, 10:15:53
Zkusil bych se v nastavení PHP (phpinfo) podívat, zda je nastavení ALLOW_URL_FOPEN na On/Off. Pokud je off, funkce na práci se soubory nemůžou přistupovat k souborům HTTP protokolem.
|
||
frodos Profil * |
#6 · Zasláno: 31. 3. 2014, 10:18:37 · Upravil/a: frodos
ono to php je obrazek, ktery musím překopírovat. Proto můžu použít jen funkci copy a ta nefunguje. Tak jsem v uličce.
allow_url_fopen = on |
||
Chro Profil |
#7 · Zasláno: 31. 3. 2014, 10:29:44
Zkus tady tu $srcfile zapsat čitelně tak, že řetězec http rozbiješ na h!ttp, možná je tam syntaktická chyba.
Pak zkus ještě po volání copy použít $errors= error_get_last(); echo "COPY ERROR: ".$errors['type']; echo "<br />\n".$errors['message']; |
||
frodos Profil * |
#8 · Zasláno: 31. 3. 2014, 10:31:15 · Upravil/a: frodos
failed to open stream: No such file or directory
Ale cesty mám správné. Možná se mu nelíbí ten obrázek v php, ale jinak ty soubory skutečně existují a cesty jsem několikrát ověřoval. Když jsem to vypsal jako http, tak mi to vypsalo tohle: Unable to access Předchozí hláška je, když je cesta z rootu $srcfile='h|ttp://www.domena.com/img_rotate.php?id='.$row["id"].'&st='.$_GET['ro']; //Unable to access |
||
Chro Profil |
#9 · Zasláno: 31. 3. 2014, 10:43:49
Soubor k načtení na stránkách údajně neexistuje.
Když si dáš adresu ze $srcfile (samozřejmě s hodnotama z proměnných) do adr. řádku prohlížeče, obrázek se načte? Funkce copy taky neposílá hlavičku user_agent a některé servery na chybějící identifikaci prohlížeče reagují nezasláním obsahu. Pak se to řeší přes CURL. |
||
frodos Profil * |
#10 · Zasláno: 31. 3. 2014, 10:44:11 · Upravil/a: frodos
Funkce copy funguje pokud mu podstrčím nějaký obrázek, ale pokud chci aby kopíroval obrázek co je v php, tak mi na to prdí z hláškou: No such file or directory
To jsem udělal jako první. Pokud tu adresu vypíšu, tak se v prohlížeči obrázek normalně načtě i do cesty jsem napsal přímo adresu bez proměných aby byla jistota, že volám správný obrázek, ale to samozřejmě nepomáhá. |
||
Chro Profil |
#11 · Zasláno: 31. 3. 2014, 11:03:02
Zkus místo copy dát
print_r(get_headers($srcfile, 1)); |
||
frodos Profil * |
#12 · Zasláno: 31. 3. 2014, 11:05:34 · Upravil/a: frodos
To vrací: This function may only be used against URLs
Array ( [0] => HTTP/1.1 200 OK [Date] => Mon, 31 Mar 2014 09:06:32 GMT [Server] => Apache/2.2.22 (Unix) PHP/5.3.10 mod_ddmh/0.0.16 [X-Powered-By] => PHP/5.3.10 [Connection] => close [Content-Type] => image/jpeg ) COPY ERROR: 2<br /> mkdir() [<a href='function.mkdir'>function.mkdir</a>]: File exists když jsem vymazal to mkdir, tak mi to vypsalo: Undefined index: kde , ale to kecá. V adrese kde mám vyplněno ?kde=test |
||
Chro Profil |
#13 · Zasláno: 31. 3. 2014, 11:34:59
A nebude to tím, že v [#3] nastavuješ chmodem souboru práva 0755 (ty jsou jen na čtení a spouštění) a pak se snažíš funkcí copy ten soubor přepsat? Zkusil bych 0777. Jinak už fakt nevím.
|
||
Tori Profil |
|||
frodos Profil * |
#15 · Zasláno: 31. 3. 2014, 11:40:49 · Upravil/a: frodos
Taky nezabírá. Když mu dám normální obrázek, tak to skopčí, ale jakmile mu dám třeba ten samej v php, tak už na něj kašle. přitom se mi v prohlížeči zobrazuje normálně.
Tori: „data, která je potřeba ošetřit“ Jsou tam jen čísla. Například 90 Musí tam bejt jenom nějaká blbost. Na xammpu mi to normálně jede Dosáhl jsem toho kopírování, le hlásí mi po přenosu, že obrázek obsahuje chyby, ale kdyz se podívám před přenosem, tak je vpořádku. Při kopírování se něco pokazí |
||
peta Profil |
frodos:
Urcite udelej echo cest a normalni img tag. Vsadim se, ze na serveru mas nejaky error. Zapnuty error_reporting by ho mohl vypsat. Jestli je to "Unable to access", tak tam ma unable to access. Tudiz opravneni. Zkus treba posat link na jednoduchou pokus stranku s povolenym error_reportingem. Kazdopadne, bez tech cest, co v nich mas, se stejne dal nehneme. echo $srcfile; echo $dstfile; echo $_SERVER['DOCUMENT_ROOT'].'/img/album/'.intval($row["id"]); $srcfile=').'&st='.$_GET['ro]).'&st='.$_GET['ro]).'&st='.$_GET['ro]).'&st='.$_GET['ro]http://www.domena.com/img_rotate.php?id='.intval($row["id"]).'&st='.$_GET['ro']; $srcfile=').'&st='. urlencode($_GET['ro]http://www.domena.com/img_rotate.php?id='.intval($row["id"])) // nehlede na to, ze tady mas nejaky nesmysl a ne http, ale tos psal, zkus tam nejak zamenit ty hranate zavorky .'&st='. urlencode($_GET['ro']); Tak si dej zobrazit obrazek v hexa editoru nebo notepadu. Asi tam mas error hlasku v datech obrazku nebo novy radek, mezeru... |
||
Časová prodleva: 10 let
|
0