我在我网站上的头像上传时收到此错误。我以前从来没有得过它,最近没有任何改变让我开始得到这个错误......
Warning: is_writable() [function.is-writable]:
open_basedir restriction in effect.
File(/) is not within the allowed path(s):
修改PHP配置中的open_basedir
settings(请参阅Runtime Configuration)。
open_basedir
设置主要用于防止特定用户的PHP脚本访问另一个用户帐户中的文件。通常,您自己帐户中的任何文件都应该由您自己的脚本读取。
如果PHP在Linux系统上作为Apache模块运行,则通过.htaccess
进行示例设置:
<DirectoryMatch "/home/sites/site81/">
php_admin_value open_basedir "/home/sites/site81/:/tmp/:/"
</DirectoryMatch>
只是搜索
open_basedir =
在php.ini中禁用它。这是解决此问题的最简单的解决方案。
在改变之前open_basedir =
改变之后;open_basedir =
P.s - 更改后不要忘记重新启动服务器。
请享用 ;)
要解决此错误,您必须编辑httpd.conf文件。之前的方法可以在apache2handler section指令Server Root中的phpinfo中看到。例如,在我的情况下这样 - / etc / httpd / httpd.conf。打开文件httpd.conf,找到open_basedir参数的提及。并将其设置为无。 (php_admin_value open_basedir无)
对我来说,运行整个事情的Plesk服务器的问题是糟糕/缺少配置值。我只是按照这里的指示:http://davidseah.com/blog/2007/04/separate-php-error-logs-for-multiple-domains-with-plesk/
您可以将PHP配置为每个VirtualHost定义都有一个单独的错误日志文件。诀窍是确切知道如何设置它,因为你不能在不破坏Plesk的情况下直接触摸配置。您(dv)上的每个域名在/ var / www / vhosts中都有自己的目录。典型目录具有以下顶级目录:
cgi-bin/
conf/
error_docs/
httpdocs/
httpsdocs/
...and so on
您将要在域目录的conf /文件夹中创建一个vhost.conf文件,其中包含以下行:
php_value error_log /path/to/error_log
php_flag display_errors off
php_value error_reporting 6143
php_flag log_errors on
更改第一个值以匹配您的实际安装(我使用/tmp/phperrors.log)。完成vhost.conf文件的编辑后,从控制台测试配置:
apachectl configtest
…or if you don’t have apachectl (as Plesk 8.6 doesn’t seem to)…
/etc/init.d/httpd configtest
最后告诉Plesk你已经做出了这个改变。
/usr/local/psa/admin/bin/websrvmng -a
如果你用php file.php
运行它。你需要编辑php.ini
找到这个文件:
: locate php.ini
/etc/php/php.ini
并附加文件到open_basedir
属性的路径:
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/run/media/andrew/ext4/protected
您引用的路径是incorect,而不是工作区的directoryRoot。尝试构建您要访问的文件的绝对路径,现在您可能正在使用相对路径...
如果你有ispconfig3的这种问题,并得到这样的错误
open_basedir限制生效。文件(/ var / www / clients / client7 / web15)不在允许的路径内:.........
要解决它(在我的例子中),只需在网站的ispconfig3面板中将PHP设置为SuPHP
希望它可以帮助别人:)
更新和/或移动后我的一个wordpress网站遇到了这个问题:)
在数据库表'wp_options'中检查'upload_path'并正确编辑它...
如果您正在运行PHP IIS堆栈并出现此错误,则通常是快速权限修复。
如果您自己管理Windows服务器并具有访问权限,请首先尝试:
导航到令您感到悲痛的文件夹,然后右键单击它>打开属性>安全性。
查看用户有权访问该文件夹,哪些文件具有只读权限,哪些文件已满。你有一个阻止写的小组吗?
该修复程序将特定于您的IIS设置,您使用匿名身份验证与特定用户IUSR或应用程序池标识?
无论如何,您最终会为IUSR,IIS_IUSRS或您的应用程序池标识之一添加新的完全写入权限 - 就像我说的,这将根据您的设置和您希望的方式而有所不同,你可以去这个谷歌兔子洞(一个这样的帖子 - IIS_IUSRS and IUSR permissions in IIS8)对我来说,我使用anon与我的应用程序池身份,所以我可以逃脱MACHINE_NAME\IIS_IUSRS
与任何临时或上传文件夹完全读/写。
我不需要在php.ini中添加任何额外的open_basedir =
。