Saltar al contenido

¿Cómo ejecuto un script personalizado php en magento2?

Solución:

Si está utilizando la configuración de nginx que viene con magento, debe poner un archivo dentro pub carpeta para permitir el acceso desde el navegador, ya que pub es la raíz del documento de vhost. El directorio raíz de Magento está un nivel más arriba. La segunda de todas las configuraciones predeterminadas para nginx solo permite acceder index.php, get.php, static.php, report.php, 404.php y 503.php archivos. Cualquier otro no es procesado por php. Puedes ver esto en línea con location ~ (index|get|static|report|404|503).php$ { en nginx.conf.sample. Si no lo está usando, verifique su configuración para ver una regla similar. Para permitir que se pueda acceder a otro archivo desde el navegador, simplemente agregue otro nombre después de 503 o cambie los corchetes completos con location ~* .php$ {

Por ejemplo, para obtener el nombre del producto mediante el script personalizado

Ejemplo 1:

Crear test.php en la raíz de Magento var/www/html/magento2/test.php

<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('memory_limit', '5G');
error_reporting(E_ALL);

use MagentoFrameworkAppBootstrap;
require 'app/bootstrap.php';

$bootstrap = Bootstrap::create(BP, $_SERVER);

$objectManager = $bootstrap->getObjectManager();

$state = $objectManager->get('MagentoFrameworkAppState');
$state->setAreaCode('frontend');

$id = 1;
$product = $objectManager->create('MagentoCatalogModelProduct')->load($id);

echo $product->getName();

Puedes ejecutar un script test.php por

http://127.0.0.1/magento2/test.php

Ejemplo 2:

paso 1: crea index.php en la raíz de magento 2

var/www/htmlmagento2/test/index.php

<?php
require __DIR__ . '../../app/bootstrap.php';
$bootstrap = MagentoFrameworkAppBootstrap::create(BP, $_SERVER);
$app = $bootstrap->createApplication('customScript');
$bootstrap->run($app);

paso 2: crea customScript.php

/var/www/html/magento2/test/customScript.php

<?php
class customScript
    extends MagentoFrameworkAppHttp
    implements MagentoFrameworkAppInterface {
    public function launch()
    {
        $this->_state->setAreaCode('frontend'); //Set area code 'frontend' or 'adminhtml
        $id = 12;
        $_product = $this->_objectManager->create('MagentoCatalogModelProduct')->load($id);

        echo $_product->getName();

        return $this->_response;
    }

    public function catchException(MagentoFrameworkAppBootstrap $bootstrap, Exception $exception)
    {
        return false;
    }

}

Ahora puede ejecutar este script personalizado

http://127.0.0.1/magento2/test/

ingrese la descripción de la imagen aquí

Si quieres permitir más de uno php para que sea ejecutable como lo necesito (import.php para el producto de importación ERP, stock.php para actualizar el inventario con mi ERP, etc.):

  • crear un nuevo directorio scripts en el /pub carpeta
  • edita tu magento vhost y agregue líneas debajo ##Allow pub/srcipts/ folder to execute php custom

     listen 80;
     server_name example.com www.example.com;

     set $MAGE_ROOT /var/www/html/magento2;
     include /var/www/html/magento2/nginx.conf.sample;

     ## Allow pub/srcipts/ folder to execute php custom
     location /scripts/ {
        location ~* .php$ {
                try_files $uri =404;
                fastcgi_pass   fastcgi_backend;
                fastcgi_buffers 1024 4k;

                fastcgi_read_timeout 600s;
                fastcgi_connect_timeout 600s;

                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }
     }

Con esto, ahora puede ejecutar sus scripts accediendo a ellos en:

http://www.example.com/scripts/your_custom_code.php
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *