2012-08-01 273 views
3

我想在PHP創建的public_html以外的文件上外的public_html創建文件在PHP中:如何共享主機

fopen("/home/sites/foo.org/backup-ticketing/asu.sql";w)

但是我收到此錯誤信息。我確信我應該能夠做到這一點,我只是無法弄清楚。該文件夾的權限是711

[星期三8月1日14時33分54秒2012] [錯誤] [客戶端84.3.2.16] PHP警告: 的fopen(/home/sites/foo.org/backup-ticketing/asu.sql) function.fopen]:未能打開流: 操作 /home/sites/foo.org/public_html/back/asu.php不允許上線4

可否請你告訴我什麼是正確的請問怎麼辦?

現在謝謝你的意見很多我有一個額外的信息:

php.ini文件中的public_html這個問題,但是我想保持它,因爲它只不過是/後退/文件夾應該是能夠做到這一點。

這裏是我的設置:

file_uploads = Off 
upload_tmp_dir = /var/php_tmp 
upload_max_filesize = 0M 
allow_url_fopen = Off 
allow_url_include = Off 
safe_mode = Off 
display_errors = off 
magic_quotes_gpc = off 
magic_quotes_runtime = off 
max_file_uploads=0 
disable_functions=passthru,exec,phpinfo 
open_basedir = /home/sites/foo.org/public_html/ 
+0

不是一個確切的重複,但這可能有所幫助:http://stackoverflow.com/questions/1202818/php-editing-text-file-above-root – Matt 2012-08-01 14:31:37

+0

該目錄的權限是711,但是所有者:目錄的組? PHP正在運行的用戶(以及任何適用的組)都是什麼? – 2012-08-01 14:33:07

+0

對不起,不是太詳細,但php.ini導致了問題。 – 2012-08-01 14:47:37

回答

2

它似乎PHP的Safe modeopen_basedir啓用阻止你,你想做的事 - 所以它只是不允許的,因此不可能的。

你可以檢查,如果你可以寫一些其他目錄的公共目錄之外,往往../tmp../temp是否有可寫的。

你也許能夠找出通過open_basedir的允許與

echo ini_get('open_basedir'); 

什麼路徑圍繞你的問題的另一種方式:把你的文件放在公共目錄的子目錄,並與的.htaccess將其固定(用戶/密碼,拒絕所有IP地址,但你的流量等)

編輯:

  • 通過htacces用戶名/密碼保護目錄:使用htaccess generator,或
  • 只允許來自某些IP地址的訪問:創建一個文件,並將其命名爲下面

    order deny,allow

    deny from all

    allow from 888.888.888.888

+0

我喜歡htaccess版本,你能提供一些樣品嗎?謝謝 – 2012-08-01 14:43:27

0

研究,我發現了明顯的答案後: 的open_basedir =無 在php.ini 我雖然有人會找到有用的。

感謝所有的答案,我從他們身上學到了很多。