是否可以掃描/由opendir和SCANDIR家用/目錄。當我嘗試執行腳本它說權限被拒絕我應該怎麼做?掃描/家庭/由opendir()
<?php
$dir = '/home/';
$dirs = scandir($dir);
?>
<pre>
<?php print_r($dirs); ?>
</pre>
是否可以掃描/由opendir和SCANDIR家用/目錄。當我嘗試執行腳本它說權限被拒絕我應該怎麼做?掃描/家庭/由opendir()
<?php
$dir = '/home/';
$dirs = scandir($dir);
?>
<pre>
<?php print_r($dirs); ?>
</pre>
爲了安全起見,PHP定義了一個「BASEDIR」,下面你不允許訪問。正如Aleks G所說,還有文件權限需要考慮。 How can I relax PHP's open_basedir restriction?
湯姆·黑格的答案抄在這裏:
你也可以做到這一點很容易在使用Apache每個目錄的基礎上(假設這是關於如何解決BASEDIR限制
這個問題舉行會談您的Web服務器)配置文件(如httpd.conf)中
<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend"
</Directory>
你也可以完全
解除限制<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir none
</Directory>
我不是PHP程序員,但我認爲你的問題是,當PHP嘗試opendir時,它使用的是與apache具有相同的用戶ID,而這可能沒有讀取/ home目錄的權限。
你可以通過改變在/ home上的權限,或添加了apache用戶ID到任何集團擁有的家庭組所有權解決這個問題。
可能它是在你的Apache配置文件有問題。即使文件系統權限允許,您的httpd.conf文件也可能不允許訪問/ home。如果您的所有HTML文件都在/ var/www中,通常會出現這種情況。
httpd.conf中可能會被設置爲允許提供文件服務瞭解用戶的主目錄。在這種情況下,該權限將被授予/ home中的目錄,但不會授予/ home本身。
您可以使用is_readable('/home/')
來檢查您是否有權限。如果沒有你需要確保目錄具有讀取權限,可能0755
(rwxr-XR-X)
答案就在你的問題:這是一個權限問題。很可能,運行Apache的進程沒有權限讀取/home
目錄(或者如果在CLI中運行,則爲您的usernamd)。在終端上手動執行此操作:
ls -ld /home
並檢查屬性。
你可以,可以,但你需要對主目錄權限這樣做。 – Prisoner