在 directadmin 上安装 laravel 的 Apache 配置

Posted

技术标签:

【中文标题】在 directadmin 上安装 laravel 的 Apache 配置【英文标题】:Apache Configuration for laravel installation on directadmin 【发布时间】:2014-10-11 13:23:18 【问题描述】:

我正在尝试使用 Direct admin 在 vps 上安装 Laravel。下面是我的 Apache 配置文件

<VirtualHost MYIP:80 >
    ServerName www.domain.com
    ServerAlias www.domain.com domain.com
    ServerAdmin webmaster@chat.am
    DocumentRoot /home/mydir/domains/domain.com/public_html
    ScriptAlias /cgi-bin/ /home/mydir/domains/domain.com/public_html/cgi-bin/
    UseCanonicalName OFF
    <IfModule !mod_ruid2.c>
            SuexecUserGroup mydir mydir
    </IfModule>
    CustomLog /var/log/httpd/domains/domain.com.bytes bytes
    CustomLog /var/log/httpd/domains/domain.com.log combined
    ErrorLog /var/log/httpd/domains/domain.com.error.log
    <Directory /home/mydir/domains/domain.com/public_html>
            php_admin_flag safe_mode OFF
            php_admin_flag engine ON
            php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f chat$
            php_admin_value mail.log /home/mydir/.php/php-mail.log
            php_admin_value open_basedir /home/mydir/:/tmp:/var/tmp:/usr/loc$
    </Directory>
</VirtualHost>

根据 Laravel 手册,我必须指向 public 目录。将doc root 设置为/home/mydir/domains/domain.com/public_html/public 后,当我尝试访问domain.com 时出现此错误

500 内部服务器错误

更新:/var/log/httpd/domains/domain.com.error.log 包含此 Laravel 错误

PHP 解析错误:语法错误,第 411 行 /home/mydir/domains/domain.com/public_html/vendor/laravel/framework/src/Illuminate/Support/helpers.php 中出现意外的“[”

【问题讨论】:

打开 /var/log/httpd/domains/domain.com.error.log,如果您尝试访问此目录,请查看 apache 在此错误日志中写入的内容。 如果上面提到的错误日志为空,请检查/var/log/apache2/error.log @Charlotte Dunois 刚刚更新了我的问题。我正在检查 apache 错误... 您的错误:PHP Parse error: syntax error, unexpected '[' in /home/mydir/domains/domain.com/public_html/vendor/laravel/framework/src/Illuminate/Support/helpers.php on line 411。修复这个 PHP 错误(这个错误信息说明了你需要知道的一切),它应该可以工作。 @Charlotte Dunois 错误是由于重定向引起的,因为我在不同的服务器上运行相同的代码,它工作正常...... 【参考方案1】:

这里的问题似乎是您的 PHP 版本。 helpers.php 中的第 411 行是 this:

$results = [];

这是从 PHP 5.4 开始创建新数组的简短语法。见php.net

正如documentation 所述,Laravel 4.2 需要 PHP >= 5.4

但是你服务器上的版本可能较低,导致这个错误。

显然,最好的解决方案是升级到至少 PHP 5.4。 如果无法升级,请使用 Laravel 4.1(需要 PHP >= 5.3.7)

【讨论】:

【参考方案2】:

首先如果你有root访问权限..你可以检查你的php版本...

php -v 

将其升级到 php 5.4。

我已经通过使用公共文件夹中的以下 .htaccess 配置文件在 Directadmin 中成功安装了 Laravel ...

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]

在直接管理员中,您可以更改内部特定域的文档根目录的 apache 配置

etc/httpd/conf.d/domians/yourdomian.conf 

把它改成...

DocumentRoot "/var/www/html/domians/yourdomain/public"

就是这样;)它应该可以正常工作;)

【讨论】:

感谢您的详细解释;)让我检查一下并回复您;) 如果更改directadmin apache config,是否会影响directadmin 脚本。因为我已经要求支持,他们建议我最好不要更改它

以上是关于在 directadmin 上安装 laravel 的 Apache 配置的主要内容,如果未能解决你的问题,请参考以下文章

如何在子域共享主机上安装 laravel

在 DirectAdmin 上安装 OpenLiteSpeed

如何在Directadmin中启用/安装PHP exif?

在centos 7服务器上使用directadmin和letsencrypt安装HTTP版本2

如何使用 DirectAdmin 在 Debian 10 上启用 Brotli?

CentOs系统的服务器,安装的DirectAdmin,可以使用类似GHOST的软件更换硬盘而不影响数据和账户吗?