PDA

View Full Version : مشکل در اجرای کد php



aloneman2005
جمعه 22 مرداد 1389, 14:45 عصر
سلام من یک کد php دارم که در زیر می نویسم.

<?php
error_reporting(E_ALL);
$service_port = getservbyname('www', 'tcp');
$address = gethostbyname('www.google.com');
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, $address,$service_port);
if ($result === false)
{
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
return;
}
$in = "GET / HTTP/1.1\r\nHost:www.google.com\r\nConnection: Close\r\n\r\n";
socket_write($socket, $in, strlen($in));
$out=" ";
do
{
$bytes = socket_recv($socket, $buf, 256, MSG_WAITALL);
if ($bytes==false)
{
$errorcode = socket_last_error($socket);
$errormsg = socket_strerror($errorcode);

die("Couldn't create socket: [$errorcode] $errormsg");
}
else
{
echo "receive... \n";
}
$len .=$bytes;
} while ($bytes>0);
echo "\n";
socket_close($socket);
?>
این کد با فرمان سوکت با پورت 80 به سایت وصل می شه و اطلاعات html اون صحفه رو نشون می ده .
کد من به خوبی روی local اجرا می شه ولی وقتی رو سرور یا هاست اون رو upload می کنم توی فرمان
socket_recv اشکال می گیره در ضمن هیچ خطایی هم نشون نمی ده.
اوی یه سرور دیگه upload کردم تو سرور بعدی توی قسمت socket_connect خطا میده .

2 - کد رو یه جور دیگه نوشتم در واقع ساده ترش کردم .

<?php

$html = file_get_contents("http://www.google.com/");
echo $html

?>
باز م این کد روی local جواب می ده و صحفه google رو نشون می ده ولی وقتی روی هاست آپلود می کنم هیچی نشون نمی ده ممنون

funpatogh
جمعه 22 مرداد 1389, 16:51 عصر
عجیبه
باسینگل کوتیشن هم تست کن


<?php

$html = file_get_contents('http://www.google.com');
echo $html

?>

aloneman2005
جمعه 22 مرداد 1389, 17:33 عصر
نه بازم جواب نداد.
حالا من زیاد با فرمان های php آشنایی ندارم ولی با سوکت کاملا آشنام
چرا سوکت جواب نمی ده . لطفا یکی از دوستان کد ها رو آپلود کنه شاید من اشتباه بکنم .
وصل شدن به پورت 80 که چیزی نداره. که بخواییم بگیم سرور به خاطر امنیت نمی ذاره.

aloneman2005
جمعه 22 مرداد 1389, 17:36 عصر
یه سوال دیگه دارم اگر ممکته جواب بدین.
ما می تونیم یه پورت دلخواه رو روی هاست به حالت listen در بیاریم .ممنون

aloneman2005
جمعه 22 مرداد 1389, 17:37 عصر
یه سوال دیگه دارم اگر ممکته جواب بدین.
ما می تونیم یه پورت دلخواه رو روی هاست به حالت listen در بیاریم .ممنون
اینترنتم قاط زده بوده ببخشید دو تا پست شد

maysam.m
جمعه 22 مرداد 1389, 17:41 عصر
خوب شاید مدیر سرور تابع file_get_contents را غیر فعال کرده. چون توی هاست من هم این کد جواب نداده بود ولی روی لوکال به خوبی کار میکرد.

امیـرحسین
جمعه 22 مرداد 1389, 21:39 عصر
قضیه پیچیده نیست. کدی که توی لوکال کار می کنه و روی سرور کار نمی کنه، اگر عدم تطابق نداشته باشه، پس بخاطر سروره.
این مشکل رو سرور باید حل کنه. وقتی تابعی روی سرور اجرا نمیشه، یعنی نمیشه دیگه. با برنامه نویسی که نمیشه کارش انداخت. این مشکل می تونه بخاطر misconfigure بودن سرور یا محدودیتها باشه. به هر حال اگر از سرور shared از نوع گمنام استفاده می کنید، امیدی نیست چون احتمالا این از تنظیمات پیشفرض سرور هست که برای راه اندازیش تخصص لازمه.


راستش من سوکت آشنایی زیادی ندارم ولی احتمالا این کار رو می تونید با cURL هم به سادگی انجام بدید.