我最近将站点从本地主机移到了VPS。我设法使公共文件和私人文件可写;但是,我不确定在哪里可以找到临时文件夹以及如何更改权限。我不断收到此消息:
由于目标目录配置不正确,无法复制指定的文件“临时:// file3Hl91E”。这可能是由文件或目录权限问题引起的。系统日志中提供了更多信息。
我正在使用Virtualmin,Drupal 7和Debian服务器。我当前的临时目录是/tmp
。
我最近将站点从本地主机移到了VPS。我设法使公共文件和私人文件可写;但是,我不确定在哪里可以找到临时文件夹以及如何更改权限。我不断收到此消息:
由于目标目录配置不正确,无法复制指定的文件“临时:// file3Hl91E”。这可能是由文件或目录权限问题引起的。系统日志中提供了更多信息。
我正在使用Virtualmin,Drupal 7和Debian服务器。我当前的临时目录是/tmp
。
Answers:
检查管理员->配置->媒体->文件系统以个性化您的tmp路径。确保使用相对路径并对Apache用户具有正确的特权。
我个人喜欢本文修复文件上传。他有很好的观察力。它为我工作。
最近,我将网站下载到了我的Mac计算机上。碰巧我在Mac上使用的mod_userdir
是Apache,却忘记了/etc/apache2/users/nameofuser.conf
需要设置AllowOverride All
,否则我将收到以下消息:
由于目标目录配置不正确,无法复制指定的文件临时文件。
在您的settings.php中
$conf['file_temporary_path'] = '/tmp';
这将99%的时间在UNIX系统上运行。
通常,/ tmp目录存在于具有打开权限的UNIX系统上,并且专门存在于临时文件中,并且通常将其设置为提高性能。
您可以通过ls -al /tmp
在命令行上运行来检查权限。
如果您有兴趣进一步阅读,请参阅https://en.wikipedia.org/wiki/Temporary_folder
/tmp
没有正确的权限,则可能无法正常工作。它甚至与公认的答案相矛盾(这本身也不是很好)。
我遇到了这个确切的问题,并确保按照建议的方式将tmp文件夹的位置使用相对路径(sites / default / files / tmp),并且我还更改了tmp文件夹的权限以确保它可以被apache写入,但我的问题仍然存在。因此,我决定查看日志消息(“报告” >>“最近的日志消息”),以查看是否可以更好地了解问题所在。通过这样做,我得到了更具体的消息:
无法在public:// js上设置文件许可权。
这促使我检查了site / default / files中js文件夹的权限,结果发现apache无法写入该文件,因此通过将该文件夹的权限更改为775,我摆脱了我的错误消息。因此,我建议您检查站点/默认目录/文件中所有子文件夹的权限,如果尚未解决问题,则不仅要检查tmp文件夹。只是以为我会分享此信息。
sudo chgrp -R www-data /var/www/mysite
与“将权限更改为775”结合在一起。这不是必要的。Drupal不需要写入每个文件夹。仅您的公共,私有和tmp文件文件夹。
该错误信息可能导致软件误导
如果它说问题出在目标目录上,则说明该Apache可能无权写入Drupal希望将文件放入的sites / default / files子文件夹。
一个好的解决方案是使apache用户成为site / default / files下所有文件和目录的所有者。
cd /path/to/sites/default
sudo chown -R _www:_www files
或类似的东西应该解决目标目录问题。仔细检查所有者对所有子目录具有写和执行权限。
chown -R www-data:www-data /var/www/html/sites/default/files/
files目录:对基于Apache的Web服务器进行故障排除
如果目录文件不是Web服务器“拥有”的,则有两种处理方法。这些说明假定您具有对Web服务器的Shell访问权限。如果您没有外壳程序访问权限,请与您的主机提供商联系以获取其他支持。
理想情况下,您将能够更改目录文件的“所有者”以匹配Web服务器的名称。在基于Unix或Linux的服务器上,您可以通过发出以下命令来验证Web服务器运行的“身份”:
$ ps aux |grep apache # for Apache 2.x
$ ps aux |grep httpd # for Apache 1.x
根据您的Web服务器,这些命令之一将返回如下几行:
www-data 13612 0.1 0.9 50640 20340 ? S 12:29 0:08 /usr/sbin/apache2 -k start
返回的文本中的第一列是Web服务器作为其运行的“用户”。在这种情况下,用户为www-data。要使文件目录可被Web服务器写入,您需要使用以下命令重新分配其所有权:
$ chown -R www-data sites/default/files
$ chmod -R 0700 sites/default/files
如果您在服务器上没有足够的权限来更改文件夹的所有权,那么下一个最佳选择是使用以下命令提供对文件夹的组写访问:
$ chmod -R 0770 sites/default/files
如上所述,您还应该能够使用FTP程序来调整目录的权限。
完成这些步骤后,请导航至管理->报告->状态报告,以确认已分配了适当的权限。滚动到标有“文件系统”的部分,并确认您的设置现在正确。
来源:文件目录
另一个错误源是它无法写入文件文件夹。就我而言,我使用以下方法解决了它:
$chmod 777 sites/default/files/pictures/
我的旧旧配置有问题
chmod 664 -R /var/drupal-bc/sites/default/files
chmod 664 -R /var/drupal-bc/sites/default/private
drw-rw-r-- 2 www-data www-data 4096 Jul 31 12:35 files
drw-rw-r-- 3 www-data www-data 4096 Jul 5 15:08 private
我的新工作正常配置
chmod 774 -R /var/drupal-bc/sites/default/files
chmod 774 -R /var/drupal-bc/sites/default/private
drwxrwxr-- 2 www-data www-data 4096 Jul 31 12:35 files
drwxrwxr-- 3 www-data www-data 4096 Jul 5 15:08 private
从一台服务器移到另一台服务器后,我遇到了同样的问题。
我尝试了这里建议的所有内容,将文件夹设置为755,依此类推。
我的临时文件夹设置为““ tmp7zXhVVCO”,它实际上很好地复制了安装文件,每次重试后,我看到临时文件都复制到了那里,但是安装一直失败。
但是问题是所有者而不是权利,这就是为什么777消除了此错误,但是我们都知道这不是在生产现场进行的方式。
您应该做的是将临时文件夹更改为其他任何文件,例如“ temp”或适合您的文件,只要尚不存在,drupal就会使用apache权限(而不是 用户权限)创建新文件夹,并且您的问题将得到解决。
The directory ../temp2 does not exist and could not be created.
我真的不喜欢任何现有的答案,所以我将自己开始,我可能会随着时间的推移而更新。主要使用shell命令。
现在,从运行sites/example.com
:
MYSITE=example.com
FILES=sites/$MYSITE/files
# CSS and JS might also cause trouble and advagg has its own dirs
TMPDIRS=$FILES/tmp $FILES/js $FILES/css $FILES/advagg_*
drush vset file_temporary_path $FILES/tmp # seems better than using /tmp
drush vset file_directory_temp $FILES/tmp
cd $(drush drupal-directory)
chown www-data -R $TMPDIRS
chmod 755 -R $TMPDIRS
我有同样的问题。
我在Windows中使用IIS。最后,问题出在文件夹sites / default / files中,以及显然在sites / default / files / tmp中的权限。
最终,我再次为文件夹赋予了“完全权限”,并且它起作用了。
问候