2009-09-13 63 views
0

我正在使用php動態創建圖像。如果我先進入並創建文件,則圖像正在創建。但是,如果我不手動創建該文件,那麼我會得到以下錯誤。獲取圖像保存問題

警告:imagegif()[function.imagegif]:無法打開 'filename2.png' 的上線/www/vhosts/yourraceresults.com/htdocs/trial/TextToImage.inc.php寫入144

實施例:

public function SaveTextAsPng($fontSize, $x, $y, $textContent, $fileName='image'){ 
    imagestring($this->image, $fontSize, $x, $y, $textContent, $this->text_color); 
    return imagepng($this->image, "/www/vhosts/yourraceresults.com/htdocs/admin/trial/images/".$fileName.".png"); 
} 

$ textToImage-> SaveTextAsPng(10,11,11 'fakeinfo', '文件名2');

+0

聽起來像權限問題。你能寫一個你想做什麼的例子嗎 – Vertigo 2009-09-13 16:49:13

+0

你在一個共享的主機上或者你自己的私人/專用服務器上嗎? – jimyi 2009-09-13 17:29:20

回答

1

輸出文件夾不存在(在這種情況下,您必須創建它),或者您沒有對輸出文件夾的寫入權限。爲了解決這個問題:

  • 如果您使用的是外殼:

    搭配chmod 777 /www/vhosts/yourraceresults.com/htdocs/trial

  • 如果您使用的是FTP客戶端:

    右鍵單擊「試用」文件夾,搜索名爲「chmod」,「權限」,「權限」(也許在「屬性」中),然後爲其授予每個權限,或者輸入chmod值777 。

+0

我做了第一個。出現同樣的錯誤。 – Joe 2009-09-13 17:12:44

+0

/www/vhosts/yourraceresults.com/htdocs/trial是寫入filename2.png的目錄,對不對?如果沒有,請重試相應的目錄。 – 2009-09-13 17:18:11

+0

我爲apporpriate目錄做了這個工作,因爲我改變了/www/vhosts/yourraceresults.com/htdocs/trial/images的路徑以避免任何危險 – Joe 2009-09-13 17:22:42

0

您是否已正確設置了輸出目錄的權限?我認爲你的Web服務器(和PHP一起)不能寫入目標文件夾。

1

看來你的網絡用戶(apache,www,...)在你要寫入的文件夾中沒有寫權限。或者,如果文件已經存在,它沒有獲得該文件的寫入權限。

編輯:更改權限

假如你是像系統在Linux與Apache web服務器,首先你需要找出作爲用戶你的Web服務器正在運行。你需要獲取服務器(SSH)命令shell,然後你或許可以看到Web服務器用戶鍵入以下命令:

$ ps aux | grep httpd 

在列表中,您將看到所有正在運行的Apache進程的用戶名中第一列。

讓我們說網絡用戶是apache,你現在需要在該目錄下給apache寫入權限。您可以通過將組更改爲apache併爲該組授予寫權限,或者通過將該目錄的所有權更改爲apache來實現。 Let's說你要更改組:

$ chgrp apache /www/vhosts/yourraceresults.com/htdocs/trial 

給所有者和用戶組(Apache)的寫權限:

$ chmod 775 /www/vhosts/yourraceresults.com/htdocs/trial 

Disclamer:這是一個快速解決方案,但我對安全知之甚少,歡迎評論!

+0

好的,我該如何改變它,我的權限很弱。 – Joe 2009-09-13 17:01:10

+0

使用FTP將權限更改爲755,或使用SSH使用chmod。 – 2009-09-13 17:18:14

0

看來你的腳本需要在該目錄上寫入權限。更改這些權限的簡單方法是通過FTP登錄並更改FTP客戶端的權限。當你右鍵點擊名爲「權限」或「文件屬性」(FileZilla)或類似文件夾的文件夾時,大部分(至少是我嘗試過的少數)FTP客戶端提供了一個選項。它應該顯示一個包含不同權限複選框的對話框;務必至少給所有者寫權限。如果您位於* nix主機上,則應該能夠轉至目錄併發出命令chmod 755。更改權限。

編輯:chmod 777。會給你最多的權限,如果755不起作用。

+0

這可能不起作用。在大多數共享環境中,運行Web服務器的unix用戶和提供文件的用戶是不同的。所以你需要給予完全的權限,否則Web服務器用戶仍然無權在目錄中寫入。 – 2009-09-13 17:15:13