Contao-Camp 2024
Ergebnis 1 bis 10 von 10

Thema: Fatal error: Can't use method return value in write context

  1. #1
    Contao-Nutzer
    Registriert seit
    27.07.2017.
    Beiträge
    168

    Fehler Fatal error: Can't use method return value in write context

    Hallo zusammen,

    ich habe soeben eine lokale Contao Installation auf einen Live-Server umgezogen.

    Obwohl es in der Dev-Umgebung ohne Probleme funktioniert, kommt in der Live-Umgebung folgender Fehler:

    Fatal error: Can't use method return value in write context

    Ich habe recherchiert, rumprobiert und herausgefunden, dass dieser Fehler durch die PHP-Funktion empty() hervorgerufen wird. Beispielsweise habe ich diesen Code, der den Fehler verursacht (lösche ich ihn kommt ein anderer Fehler, der mit der empty() Funktion zusammenhängt usw.):

    PHP-Code:
    <?php
    if( ! empty($this->field('bild')->value()))
    {
        
    $bildpfad = \FilesModel::findByPk($this->field('bild')->value());

        
    $picture = \Picture::create($bildpfad->path6);
        
    $picture $picture->getTemplateData();
        
    $picture['alt'] = $this->replaceInsertTags('{{page::title}}');

        
    /*<div class="visual" style="background-image:url(<?= $bildpfad->path ?>);"></div>*/
    }
    ?>
    Was mache ich in so einem Fall bzw. an was liegt es? Hat die PHP Version damit zu tun? Ich kann auf diese Funktion nicht verzichten, weil diese global in all meinen Templates existiert.

    Ich hoffe jemand kann mir schnell weiterhelfen.

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Welche PHP Version? empty() funktioniert in älteren Versionen nur auf Variablen.

  3. #3
    Contao-Nutzer
    Registriert seit
    27.07.2017.
    Beiträge
    168

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Welche PHP Version? empty() funktioniert in älteren Versionen nur auf Variablen.
    Bei Domainfactory unter PHP-Einstellungen finde ich folgende Informationen:

    Version: 5-54STABLE-FCGI

    Hier befindet sich auch eine konfigurierte PHP.INI mit folgendem Inhalt:

    Code:
    [PHP]
      engine = On
      short_open_tag = On
      precision = 14
      y2k_compliance = Off
      output_buffering = Off
      output_handler = 
      unserialize_callback_func = 
      zlib.output_compression = 
      implicit_flush = Off
      allow_call_time_pass_reference = On
      safe_mode = Off
      safe_mode_gid = 
      safe_mode_include_dir = 
      safe_mode_exec_dir = 
      safe_mode_allowed_env_vars = "PHP_"
      safe_mode_protected_env_vars = "LD_LIBRARY_PATH"
      disable_functions = 
      highlight.string = "#CC0000"
      highlight.comment = "#FF9900"
      highlight.keyword = "#006600"
      highlight.bg = "#FFFFFF"
      highlight.default = "#0000CC"
      highlight.html = "#000000"
      expose_php = On
      max_execution_time = 1200
      memory_limit = 256M
      error_reporting = 2039
      display_startup_errors = 
      track_errors = Off
      variables_order = "EGPCS"
      register_argc_argv = On
      post_max_size = 100M
      gpc_order = "GPC"
      magic_quotes_runtime = Off
      magic_quotes_sybase = Off
      default_mimetype = "text/html"
      doc_root = 
      user_dir = 
      enable_dl = On
      file_uploads = 1
      date.timezone = "Europe/Berlin"
      asp_tags = On
      allow_url_fopen = On
      display_errors = Off
      log_errors = On
      error_log = "/kunden/261105_71522/error_logs/delstde/error.txt"
      register_globals = Off
      magic_quotes_gpc = On
      auto_prepend_file = 
      auto_append_file = 
      include_path = ".:/usr/local/lib/php"
      upload_max_filesize = 120M
      extension_dir = "./"
      zend_optimizer.enable_loader = On
      zend_optimizer.optimization_level = 15
    
    [mail function]
      SMTP = "localhost"
      sendmail_from = "me@localhost.com"
    
    [SQL]
      sql.safe_mode = Off
    
    [ODBC]
      odbc.allow_persistent = 1
      odbc.check_persistent = 1
      odbc.max_persistent = -1
      odbc.max_links = -1
      odbc.defaultlrl = 4096
      odbc.defaultbinmode = 1
    
    [MySQL]
      mysql.allow_persistent = Off
      mysql.max_persistent = -1
      mysql.max_links = -1
      mysql.default_port = 
      mysql.default_socket = 
      mysql.default_host = 
      mysql.default_user = 
      mysql.default_password = 
    
    [PostgresSQL]
      pgsql.allow_persistent = On
      pgsql.auto_reset_persistent = 
      pgsql.max_persistent = -1
      pgsql.max_links = -1
    
    [bcmath]
      bcmath.scale = 0
    
    [browscap]
      browscap = "/usr/local/lib/browscap.ini"
    
    [Session]
      session.serialize_handler = "php"
      session.gc_divisor = 10
      session.gc_probability = 1
      session.referer_check = 
      session.entropy_length = 0
      session.entropy_file = 
      session.cache_limiter = "nocache"
      session.cache_expire = 180
      session.use_trans_sid = 1
      url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
      session.save_handler = "Files"
      session.save_path = "/kunden/261105_71522/ses_data/delst.de"
      session.use_cookies = On
      session.name = "DELSTSESSION"
      session.auto_start = Off
      session.cookie_lifetime = 0
      session.cookie_path = "/"
      session.cookie_domain = ".delst.de"
      session.gc_maxlifetime = 1440
    
    [Sockets]
      sockets.use_system_read = 1
    
    [Assertion]
      assert.active = On
      assert.warning = On
      assert.bail = Off
      assert.callback = 
      assert.quiet_eval = Off
    
    [filesize]
      upload_max_filesize = 128M
      post_max_size = 128M
      max_execution_time = 3600
    
    [Zend]
      zend_optimizer.optimization_level = 15
      default_charset = "utf-8"

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Du brauchst mindestens PHP 5.5: http://php.net/manual/en/function.empty.php
    Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error.

  5. #5
    Contao-Nutzer
    Registriert seit
    27.07.2017.
    Beiträge
    168

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du brauchst mindestens PHP 5.5: http://php.net/manual/en/function.empty.php

    Ich habe auf die folgende Version umgestellt (weitere Contao Website läuft ebenfalls unter der Version):

    5-53STABLE-STANDARD (5.3.29)

    Jetzt funktioniert es.

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Du solltest weder PHP 5.3, noch 5.4 oder 5.5 verwenden . All diese PHP Versionen haben schon lange ihr Lebensende erreicht.

  7. #7
    Contao-Nutzer
    Registriert seit
    27.07.2017.
    Beiträge
    168

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du solltest weder PHP 5.3, noch 5.4 oder 5.5 verwenden . All diese PHP Versionen haben schon lange ihr Lebensende erreicht.
    Ja, ich würde auch gerne die aktuellste Version benutzen, jedoch laufen auf den jeweiligen Domains viele alte Websites, die auf die ältere Version angewiesen sind. Und bei Domainfactory kann ich leider nicht pro Verzeichnis eine andere PHP Version setzen, sondern immer nur auf die komplette Domain.

    Muss ich eigentlich mit Schwierigkeiten rechnen, wenn ich die PHP Version später (nachdem die alten Seiten gelöscht wurden) hochsetze?

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Zitat Zitat von Codehan Beitrag anzeigen
    Ja, ich würde auch gerne die aktuellste Version benutzen, jedoch laufen auf den jeweiligen Domains viele alte Websites, die auf die ältere Version angewiesen sind. Und bei Domainfactory kann ich leider nicht pro Verzeichnis eine andere PHP Version setzen, sondern immer nur auf die komplette Domain.
    Naja, lagere die Contao Installation in eine eigene Domain aus. Du solltest die Web Applikationen sowieso sauber per Domain trennen.


    Zitat Zitat von Codehan Beitrag anzeigen
    Muss ich eigentlich mit Schwierigkeiten rechnen, wenn ich die PHP Version später (nachdem die alten Seiten gelöscht wurden) hochsetze?
    Nein, sollte prinzipiell keine Schwierigkeiten machen - es sei denn du hast Code drin, der in neueren PHP Versionen nicht mehr funktioniert.

  9. #9
    Contao-Nutzer
    Registriert seit
    27.07.2017.
    Beiträge
    168

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Naja, lagere die Contao Installation in eine eigene Domain aus. Du solltest die Web Applikationen sowieso sauber per Domain trennen.


    Nein, sollte prinzipiell keine Schwierigkeiten machen - es sei denn du hast Code drin, der in neueren PHP Versionen nicht mehr funktioniert.

    So werde ich es dann wohl machen.

    Naja, eigentlich nicht aber ich habe schon bei anderen Projekten die Erfahrung gemacht, dass nach einem Update auf eine höhere Version oft die Meldung "deprecated" kam.

    Ich lass mich überraschen

    Danke dir für die Tipps

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Zitat Zitat von Codehan Beitrag anzeigen
    Naja, eigentlich nicht aber ich habe schon bei anderen Projekten die Erfahrung gemacht, dass nach einem Update auf eine höhere Version oft die Meldung "deprecated" kam.
    Das kann durchaus sein, aber diese Meldung ist ja prinzipiell nur ein Hinweis und kein Fehler. In der Produktivumgebung lässt du solche Meldungen ja nicht ausgeben.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •