我尝试在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
->Environment
→Directory Status