2017-04-20 160 views
1

我試圖從url加載image。 一切工作正常localhostfile_get_contents():無法打開流:權限被拒絕

當我運行在我的網絡服務器的代碼跟它

Warning: file_get_contents(url): failed to open stream: Permission denied in /home/www/ .../imageup.php on line 64

我搜索上google並與stackoverflow很多答案嘗試。 大家都在說要將proper permission設置爲文件和文件夾。

我已將permission設置爲php file,並將文件夾設置爲777

一些答案說運行一些命令,但我找不到控制檯來運行該代碼,所以我手動允許權限。

我可以理解,有一些權限,但無法弄清楚。 (有人可能會說這是一個重複的,並且可以是,但我無法找到解決方案)

$file = file_get_contents($image['src']); 
+0

3個問題。 1)什麼是src? 2)什麼是你的網絡主機的根3)你可以使用該功能的文件存在於你的PHP文件的相同文件夾。 – Augwa

+0

1.''image ['src']'返回一個'url' – Sudarshan

+0

所以它就像'http:// example.org/image.png'如果你在這方面獲得了權限拒絕,這意味着'allow_url_fopen'是假。看到這個stackoverflow問題,http://stackoverflow.com/questions/3488425/php-ini-file-get-contents-external-url。您的虛擬主機提供商不允許這樣做。 – Augwa

回答

0

請去你的項目的根目錄並運行以下命令

find . -type d -exec chmod 770 {} \; && find . -type f -exec chmod 660 {} \; 

我希望它能解決你的問題。

+0

我需要一個控制檯或其他東西來運行代碼嗎?或作爲代碼在文件中? – Sudarshan

1

這是因爲imagestmp_file_upload只能通過root用戶寫入。爲了上傳工作,我們需要使這些文件夾的所有者與httpd流程所有者相同,或者使它們成爲全局可寫的(不好的做法)。

1.查看apache進程所有者:$ps aux | grep httpd。第一列將是車主通常這將是nobody

2.Change圖像和tmp_file_upload的所有者將成爲nobody或者你在步驟1中

$sudo chown nobody /var/www/html/mysite/images/

$sudo chown nobody /var/www/html/mysite/tmp_file_upload/

找到了失主

3.Chmod imagestmp_file_upload現在可以由所有者寫入,如果需要的話[看起來你已經有了這個]。 @Dmitry Teplyakov提到了答案。

$ sudo chmod -R 0755 /var/www/html/mysite/images/

$ sudo chmod -R 0755 /var/www/html/mysite/tmp_file_upload/

4.對於更多的細節,爲什麼這種行爲happend,查手冊http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir,請注意,它也談到open_basedir指令。

相關問題