PHP fopen($url,w)

$url="http://www.source.com/top";
$destination=fopen("/var/www/vhosts/domain.com/httpdocs/temp/" . date('m-d-Y'),"w");
echo "dest=$destination<br>";
echo "url=$url<br>";
$source=fopen($url,"r");
$maxsize=5000000000;
$length=0;
while (($a=fread($source,1024))&&($length<$maxsize))
{
$tmpfile=$tmpfile . $a;
$length=$length+1024;

}        
    fwrite($destination,$tmpfile);
fclose($source);
fclose($destination);

Горният изходен код на PHP работи като чар в моя споделен хостинг акаунт. Той обаче не успява да запише файлове на моята специална Linux Centos машина. В тази машина Centos източникът $url може да се чете добре, но този ред:

     $destination=fopen("/var/www/vhosts/domain.com/httpdocs/temp/" . date('m-d-Y'),"w");

Не успява да запише файла в Linux кутия. Опитах се да изпълня горния код под root потребител на linux (като php file-name.php) и успях да създам файла, но не можах да прочета изходния файл:

     $destination=fopen("/var/www/vhosts/domain.com/httpdocs/temp/" . date('m-d-Y'),"w");

Получавам грешка 403. Много съм объркан какво се случва с тази Linux Centos машина. Както публикувах по-рано в това поле на Centos, имам проблем с променливите на сесията се връщат празно между подаването на същата страница. Всяка помощ се оценява.


person user914425    schedule 22.02.2012    source източник
comment
@user914425 Може да е нещо общо с разрешението ви за файл. Опитайте chmod 777 -R /var/www/vhosts/domain.com/httpdocs/temp/ и опитайте отново. Превключете привилегиите на по-сигурни, след като откриете проблема   -  person Jaspreet Chahal    schedule 22.02.2012
comment
позволете ми да променя разрешението за папка на 777.   -  person user914425    schedule 22.02.2012


Отговори (1)


Защо просто не направите?:

<?php 
error_reporting(E_ALL);/*Debug any permission problems*/
$url="http://www.source.com/top";
$temp="/var/www/vhosts/domain.com/httpdocs/temp/".date('m-d-Y').".tmp";

file_put_contents($temp,file_get_contents($url));
?>
person Lawrence Cherone    schedule 22.02.2012