Какво точно имаш предвид с това? Първоначално реших, че става дума, че проблемът не се проявява, когато изпълниш кода през CLI (демек, в конзолата), а се проявява само когато изпълниш кода през браузъра, но в последния си пост казваш, че и през CLI получаваш празен стринг. Какво точно е положението с проблема, когато кодът се изпълни през браузъра и през CLI?
Не бях пробвал през CLI, до предложението на д0ни. Имах впредвид, че
GeSHi (PHP):
работи, но ако се опитам да достъпя същия файл през апача и не работи:
GeSHi (PHP):
Файла разбира се го слагам в webroot и през браузър си е достъпен.
И как проверяваш дали $result е празен или false? Така
GeSHi (PHP):
if ($result === false)
или по друг начин?
Точно - ето snippet:
GeSHi (PHP):
<?php
$url='http://46.10.18.2/';
if($result===false){ print 'Is false';
} else{ print '<pre>';var_dump
($result);print
'</pre>';
}
, който код връща това:
string(0) ""
Резултата от изпълнението през CLI в strace обаче тотално ме разби. Пуснах го да се изпълни около 10 пъти, като в 3 от тях file_get_contents върна празен стринг, а в 7 успя да вземе отдалечената страница. Ето отрязък от изхода на strace, когато върна празен стринг:
close(4) = 0
munmap(0x7f0fd0472000, 4096) = 0
write(1, "<pre>", 5) = 5
write(1, "http://46.10.18.2/", 18) = 18
write(1, "</pre>", 6) = 6
clock_gettime(CLOCK_MONOTONIC, {279797, 367838193}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 367908864}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 367969758}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 368023948}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 368077579}) = 0
clone(child_stack=0x7f0fc633cff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f0fc633d9e0, tls=0x7f0fc633d710, child_tidptr=0x7f0fc633d9e0) = 27152
clock_gettime(CLOCK_MONOTONIC, {279797, 368280651}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 368336797}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 368389031}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 368438752}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 368729534}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 369055512}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 369106070}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 369154953}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 369210260}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 369258864}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 369307467}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 369355512}) = 0
clock_gettime(CLOCK_MONOTONIC, {279797, 369425344}) = 0
futex(0x7f0fc633d9e0, FUTEX_WAIT, 27152, NULL) = 0
write(1, "string(0) \"", 11) = 11
write(1, "\"\n", 2) = 2
munmap(0x7f0fd032b000, 528384) = 0
close(2) = 0
close(1) = 0
munmap(0x7f0fd0329000, 4096) = 0
close(0) = 0
munmap(0x7f0fd032a000, 4096) = 0
munmap(0x7f0fc6548000, 2185624) = 0
munmap(0x7f0fc675e000, 2109872) = 0
munmap(0x7f0fc6962000, 2105696) = 0
munmap(0x7f0fc6b65000, 2114048) = 0
munmap(0x7f0fc6d6a000, 2142984) = 0
munmap(0x7f0fc6f76000, 2435864) = 0
munmap(0x7f0fc7493000, 2130688) = 0
munmap(0x7f0fc71c9000, 2924352) = 0
munmap(0x7f0fc7e85000, 2118144) = 0
munmap(0x7f0fc7bc6000, 2875640) = 0
munmap(0x7f0fc78b3000, 3219512) = 0
munmap(0x7f0fc808b000, 2127056) = 0
munmap(0x7f0fc8293000, 2126528) = 0
gettimeofday({1289239084, 346413}, NULL) = 0
munmap(0x7f0fc849b000, 2253992) = 0
munmap(0x7f0fc8a61000, 2155560) = 0
exit_group(0) = ?
и така свършва изпълнениеот.
Ето и отрязък при успешното изпълнение на file_get_contents:
close(4) = 0
munmap(0x7f17211c6000, 4096) = 0
write(1, "<pre>", 5) = 5
write(1, "http://46.10.18.2/", 18) = 18
write(1, "</pre>", 6) = 6
clock_gettime(CLOCK_MONOTONIC, {279823, 109987076}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 110055791}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 110115847}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 110169478}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 110222830}) = 0
clone(child_stack=0x7f1717090ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f17170919e0, tls=0x7f1717091710, child_tidptr=0x7f17170919e0) = 27158
clock_gettime(CLOCK_MONOTONIC, {279823, 110708584}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 110766685}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 110819199}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 110868081}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 110941824}) = 0
gettimeofday({1289239110, 81599}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 111056349}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 111108305}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 111158863}) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(4, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("46.10.18.2")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=4, events=POLLOUT|POLLWRNORM}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {279823, 111599925}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 111677858}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 111726182}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 111777020}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 111824785}) = 0
poll([{fd=4, events=POLLOUT|POLLWRNORM}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {279823, 111923109}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 111971992}) = 0
select(5, [], [4], [], {15, 0}) = 1 (out [4], left {14, 456708})
clock_gettime(CLOCK_MONOTONIC, {279823, 655820316}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 655923389}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 656018361}) = 0
poll([{fd=4, events=POLLOUT|POLLWRNORM}], 1, 0) = 1 ([{fd=4, revents=POLLOUT|POLLWRNORM}])
clock_gettime(CLOCK_MONOTONIC, {279823, 656299646}) = 0
getsockopt(4, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 656520875}) = 0
getpeername(4, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("46.10.18.2")}, [16]) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(41367), sin_addr=inet_addr("10.10.10.10")}, [16]) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 656873947}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 656982327}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 657085958}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 657192942}) = 0
sendto(4, "GET / HTTP/1.1\r\nUser-Agent: Mozi"..., 74, MSG_NOSIGNAL, NULL, 0) = 74
clock_gettime(CLOCK_MONOTONIC, {279823, 657555512}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 657686517}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 657787355}) = 0
poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {279823, 657993500}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 658152439}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 658259702}) = 0
select(5, [4], [4], [], {15, 0}) = 1 (out [4], left {14, 999993})
clock_gettime(CLOCK_MONOTONIC, {279823, 658508584}) = 0
poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {279823, 658707467}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 658803277}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 658902439}) = 0
select(5, [4], [4], [], {15, 0}) = 1 (out [4], left {14, 999995})
clock_gettime(CLOCK_MONOTONIC, {279823, 659145177}) = 0
poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {279823, 659343780}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 659439590}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 659539031}) = 0
select(5, [4], [4], [], {15, 0}) = 1 (out [4], left {14, 999995})
clock_gettime(CLOCK_MONOTONIC, {279823, 659773109}) = 0
poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {279823, 659970595}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 660066126}) = 0
clock_gettime(CLOCK_MONOTONIC, {279823, 660174227}) = 0
select(5, [4], [4], [], {15, 0}) = 1 (out [4], left {14, 999995})
clock_gettime(CLOCK_MONOTONIC, {279823, 660408026}) = 0
poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {279823, 660605512}) = 0
Като тук има доста изход от strace до приключване на изпълнението.
Ето ги двата пълни strace-a:
При празен стринг:
http://senser.no-ip.org/straceПри непразен стринг:
http://senser.no-ip.org/strace2