【问题标题】:Apache Configuration for laravel installation on directadmin在 directadmin 上安装 laravel 的 Apache 配置
【发布时间】: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 错误是由于重定向引起的,因为我在不同的服务器上运行相同的代码,它工作正常......

标签: php apache .htaccess laravel httpd.conf


【解决方案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 脚本。因为我已经要求支持,他们建议我最好不要更改它
    猜你喜欢
    • 2015-06-16
    • 2020-06-08
    • 2017-04-02
    • 2021-12-05
    • 2018-01-09
    • 2018-08-17
    • 2017-12-04
    • 2015-01-12
    • 2018-06-24
    相关资源
    最近更新 更多