2011-12-31 230 views
1

我正在創建一個幻燈片Wordpress插件(雖然這不是一個真正的WordPress問題)。通過各種設置,它通過PHP創建一個CSS文件,用於設置幻燈片的樣式。PHP文件權限 - 創建文件

CSS文件是從用戶保存到數據庫的所有不同樣式變量創建的,因此需要動態創建一個。

問題是,當PHP嘗試保存創建的文件時,某些託管公司(或共享主機)會導致問題。通常這些是文件權限問題。停止保存此文件導致幻燈片顯示不正確並出現故障。

有什麼我可以通過PHP做爲替代具有這種文件權限問題的用戶嗎?據我所知,你可以通過PHP修改文件權限和文件所有權,但我以前從未做過,也不確定是否有正確的方式去實現它,但卻涵蓋了儘可能多的不同場景。

對於很多用戶來說,只是通知他們如何更改相應的文件權限的情況,但對於奇數人來說,這完全超出了他們,並且我不可能登錄到FTP並執行此操作對他們來說(通常是因爲他們甚至不知道FTP是什麼)。

任何人都可以指向正確的方向嗎?

+0

你需要查找[chmod()](http://www.php .net/chmod)更改您的文件權限設置。您可能創建的級別太低,無法訪問任何人,並且可能需要提高可用性。 – Duniyadnd 2011-12-31 00:37:30

+0

難道你不能將文件寫入上傳目錄嗎?一些地方的權限應該已經在WP安裝中設置? – 2011-12-31 02:12:34

+0

@Duniyadnd - 大部分時間用戶沒有問題,但偶爾也會有問題。這些停止創建文件的主機通常也會阻止chmod()函數。想知道是否有另一個步驟,我可以爲與此功能不是一個選項的用戶。 – 2012-01-02 01:37:40

回答

0

我想你可以在其中,你會牽着你的CSS文件(S)的目錄,並在PHP執行命令chmod 777這樣的:

​​

我在這裏看到的唯一的問題,一個公司,否認你訪問chmod你的文件不是那麼愚蠢的讓你的PHP的權限...所以,你爲什麼不只是有一種'網關'文件,它會動態地從DB獲取CSS值,形成一個有效的CSS輸出並提供給用戶?

+0

你究竟是什麼意思?你的意思是一個充當動態CSS文件的PHP嗎?我研究了這一點,但需要將Wordpress功能加載到PHP文件中,這不是一個好主意(所以我讀過)。 – 2011-12-31 01:12:09

+0

是的,我的意思是一個動態的PHP的CSS文件。你說什麼 - 將wp功能加載到php文件中? – 2011-12-31 01:21:05

+0

那麼訪問WordPress的數據庫值是最簡單的通過Wordpress功能,這將需要加載Wordpress文件,這將導致大量額外的服務器負載,等等。 – 2011-12-31 01:59:38

0

您最好的選擇可能是:

// Get your values however 
$css_values = $database->get_css_values(); 

// Generate your CSS stylesheet string 
$css_string = css_values_to_string($css_values); 

// Dump it directly 
header('Content-type: text/css'); 
echo $css_string; 

,並指向PHP文件作爲一個樣式表:

<link rel="stylesheet" type="text/css" href="path/to/generator.php" /> 

雖然這foregoes傾銷到CSS文件的「緩存」功能,想必您可以利用通過Wordpress提供的任何緩存支持。有可能,每次動態生成它的方法都不會導致瓶頸(無論如何,如果你擔心的話)

+0

這些自定義函數是用來獲取值的嗎? – 2012-01-02 13:31:47

+0

@MatthewRuddy - 是;用你的功能替代他們。本質上,做任何你需要做的,以建立CSS文件。模板不是將其存儲到文件中,而是將模板作爲目標,模板將您的PHP腳本定位爲CSS資源,而不是將CSS數據轉儲到文件中,而是將其輸出。正如我所提到的,這會否定將其轉儲到文件的固有緩存功能,但是您可以通過這種方式解決任何文件系統訪問問題。 – Dan 2012-01-02 17:08:36