如何解决 PHP 运行时异常 "Could not open log file" for Typo3



我尝试在Ubuntu 20上使用Apache2作为web服务器安装Typo3 11和Composer。PHP 7.4和MariaDB正在运行,但是PHP在Typo3文件夹中读写有问题。PHP致命错误:Uncaught RuntimeException: Could not open log file

我安装了Typo3与Composer在家里的目录

composer create-project typo3/cms-base-distribution:^11 project
composer install --no-dev

目录现在看起来像这样:

-rw-rw-r--  1 sudoUser sudoUser   1371 Nov 13 20:36 composer.json
-rw-rw-r--  1 sudoUser sudoUser 271237 Nov 13 20:36 composer.lock
drwxrwsr-x  3 sudoUser sudoUser   4096 Nov 13 20:36 config/
drwxrwxr-x  6 sudoUser sudoUser   4096 Nov 13 20:31 project/
drwxrwxrwx  6 sudoUser sudoUser   4096 Nov 14 09:00 public/
drwxrwsr-x  7 sudoUser sudoUser   4096 Nov 13 20:36 var/
drwxrwxr-x 24 sudoUser sudoUser   4096 Nov 13 20:36 vendor/

public如下所示:

-rw-rw-r-- 1 sudoUser sudoUser  815 Nov 13 20:36 index.php
drwxrwxr-x 3 sudoUser sudoUser 4096 Nov 13 20:36 typo3/
drwxrwxr-x 3 sudoUser sudoUser 4096 Nov 13 20:36 typo3conf/
drwxrwsr-x 3 sudoUser sudoUser 4096 Nov 13 20:36 typo3temp/

然后我在/var/www/html中为Apache2创建了符号链接,所以有这些符号链接到typo3:

lrwxrwxrwx 1 root root   25 Nov 14 14:49 index.php -> typo3src/public/index.php
lrwxrwxrwx 1 root root   31 Nov 14 14:48 typo3src -> /home/sudoUser/t3newProject//

现在,如果我去开始页,我没有得到一个typo3的着陆页,我得到一个http响应500(内部服务器错误)。所以我为/var/log/apache2/error。log做了一个尾部,结果如下:

[Mon Nov 14 14:53:47.615281 2022] [php7:warn] [pid 81236] [client 188.102.130.86:55812] PHP Warning:  fopen(/home/sudoUser/t3newProject/var/log/typo3_3a57bb40f2.log): failed to open stream: Permission denied in /home/sudoUser/t3newProject/public/typo3/sysext/core/Classes/Log/Writer/FileWriter.php on line 181
[Mon Nov 14 14:53:47.615336 2022] [php7:error] [pid 81236] [client 188.102.130.86:55812] PHP Fatal error:  Uncaught RuntimeException: Could not open log file "/home/sudoUser/t3newEFFORT/var/log/typo3_3a57bb40f2.log" in /home/sudoUser/t3newProject/public/typo3/sysext/core/Classes/Log/Writer/FileWriter.php:183nStack trace:n#0 /home/sudoUser/t3newProject/public/typo3/sysext/core/Classes/Log/Writer/FileWriter.php(113): TYPO3\CMS\Core\Log\Writer\FileWriter->openLogFile()n#1 /home/sudoUser/t3newProject/public/typo3/sysext/core/Classes/Log/Writer/FileWriter.php(72): TYPO3\CMS\Core\Log\Writer\FileWriter->setLogFile()n#2 /home/sudoUser/t3newProject/public/typo3/sysext/core/Classes/Utility/GeneralUtility.php(3221): TYPO3\CMS\Core\Log\Writer\FileWriter->__construct()n#3 /home/sudoUser/t3newProject/public/typo3/sysext/core/Classes/Log/LogManager.php(145): TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance()n#4 /home/sudoUser/t3newProject/public/typo3/sysext/core/Classes/Log/LogManager.php(106): TYPO3\CMS\Core\Log\LogManager->setWritersForLogger()n#5 /home/sudoUser/t3newProject/public/typo3/sysext/cor in /home/sudoUser/t3newProject/public/typo3/sysext/core/Classes/Log/Writer/FileWriter.php on line 183

所以我猜它与系统文件rwx权限有关,但我不知道哪些文件夹或文件或服务我必须给予哪些权限,因为没有/home/sudouser/t3newefort/var/log目录。我需要改变什么?

您在评论中说权限对每个人来说都是读写的。但是(出于安全原因)apache服务器不应该是所有的服务器。正常情况下,apache用户比其他用户更受限制。

因此,为文件夹和文件设置正确的用户或至少用户组是很重要的。否则,TYPO3(或任何脚本)都不能正确工作。

一般来说,apache用户有自己的组(如www),如果你想在web服务器的文件夹中工作,你应该使用这个组,并将所有的文件和文件夹分配到这个组。

通常的右掩码是文件的664和文件夹的2775。与集团结合www.

您可以在实例
(如srv/www/htdocs/instance1/)的根文件夹中使用这些命令分配这些权限:
验证您的apache用户的用户名(wwwrun)和用户组(www),并在必要时进行调整!

chown wwwrun:www -R *
find . -type d -exec chmod 2775 "{}" ; 
find . -type f -exec chmod 664 "{}" ;

如果TYPO3可以访问所有文件和文件夹,可以在'Install-Tool'中检查(如果您的用户是安装的维护者,可以使用独立脚本webdomain/typo3/install.php或后端模块):
Admin Tools->EnvironmentDirectory Status

相关内容

最新更新