Esta consulta es de hace 8 años. No tome esta información como actualizada. Si tiene problemas con FacturaScripts, consulte la sección ayuda o la sección contacto
manus.reload_f74d39

Plugin: facturacion_base

manus.reload_f74d39   España   11-01-2017 16:08:41   11-01-2017 19:40:59   65   [NeoRazorX]
Plugin: facturacion_base

Buenas tardes,

Acabamos de encontrar un error relacionado con la seguridad de Apache/Httpd, el problema viene al usar la directiva php 'open_basedir' y con el plugin 'facturacion_base'.

Probablemente el código este intentando acceder a un directorio que no esta permitido por esta directiva (en este caso es el public_html y /tmp).

Aquí te dejo el error que da apache:

```
[Wed Jan 11 15:59:54.524643 2017] [:error] [pid 7377] [client 81.33.27.200:33420] PHP Warning: is_dir(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (/home/admin/web/comvirtud.com/public_html:/tmp) in /home/admin/web/comvirtud.com/public_html/plugins/facturacion_base/controller/base_wizard.php on line 284
[Wed Jan 11 15:59:54.524758 2017] [:error] [pid 7377] [client 81.33.27.200:33420] PHP Warning: require_once(/home/admin/web/comvirtud.com/public_html/plugins/facturacion_base): failed to open stream: Operation not permitted in /home/admin/web/comvirtud.com/public_html/plugins/facturacion_base/controller/base_wizard.php on line 302
[Wed Jan 11 15:59:54.524773 2017] [:error] [pid 7377] [client 81.33.27.200:33420] PHP Fatal error: require_once(): Failed opening required '/home/admin/web/comvirtud.com/public_html/plugins/facturacion_base/controller/..' (include_path='.:/usr/share/pear:/usr/share/php') in /home/admin/web/comvirtud.com/public_html/plugins/facturacion_base/controller/base_wizard.php on line 302
```

Y esta es la configuración de Apache relativa al error:
```
<Directory /home/admin/web/comvirtud.com/public_html>
AllowOverride All
Options +Includes -Indexes +ExecCGI
php_admin_value open_basedir /home/admin/web/comvirtud.com/public_html:/tmp
</Directory>

```

La parte de código que esta dando el problema es la siguiente:
plugins/facturacion_base/controller/base_wizard.php:281
```
/// leemos todos los controladores del plugin
foreach( scandir(__DIR__) as $f)
{
if( is_string($f) AND strlen($f) > 0 AND !is_dir($f) AND $f != __CLASS__.'.php' )
{
/// obtenemos el nombre
$page_name = substr($f, 0, -4);

/// lo buscamos en el menú
$encontrado = FALSE;
foreach($this->menu as $m)
{
if($m->name == $page_name)
{
$encontrado = TRUE;
break;
}
}

if(!$encontrado)
{
require_once __DIR__.'/'.$f;

```
Por lo que he estado viendo bastaría con que el bucle 'foreach( scandir...' tuviese una condición para que no escanee el directorio '..'. Quedaría algo como:

```
foreach( scandir(__DIR__) as $f)
{
if( $f != '..' AND is_string($f) AND strlen($f) > 0 AND !is_dir($f) AND $f != __CLASS__.'.php' )
{

```

Lo he testeado y parece que funciona.

Un saludo!

Plugins relacionados

Plugin facturacion_base
OK, solucionado.
[[Cerrado por inactividad]]
¿Problemas con FacturaScripts?
Si tiene problemas con FacturaScripts consulte la sección ayuda o la sección contacto



Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2024 FacturaScripts
0.16338s

Soporte