🧙Конкурс сказок!
Архив тем
(OFF) irishmann (S) 16 ноя 2018

Файл есть, а скрипт не видит

Вот лог apache
[Fri Nov 16 13:58:10.741379 2018] [:error] [pid 5078] [client 192.168.1.160:2949] PHP Warning: Invalid argument supplied for foreach() in /var/www/html/index.php on line 33
[Fri Nov 16 13:58:10.742108 2018] [:error] [pid 5078] [client 192.168.1.160:2949] PHP Warning: require(/var/www/html/protected/config/local/common.php): failed to open stream: No such file or directory in /var/www/html/protected/config/OEConfig.php on line 48
[Fri Nov 16 13:58:10.742157 2018] [:error] [pid 5078] [client 192.168.1.160:2949] PHP Fatal error: require(): Failed opening required '/var/www/html/protected/config/local/common.php' (include_path='.:/usr/share/php') in /var/www/html/protected/config/OEConfig.php on line 48
Вот код OEConfig.php
<?php

class OEConfig
{
/**
* Loads config files for current environment and returns a merged array.
*
* Config load order is:
* - core/common
* - core/environment
* - module1/common
* - module1/environment
* - module2/common
* - module2/environment
* - ...
* - local/common
* - local/environment
*
* So local configs will override earlier ones.
*
* Core and local configs are pre processed in order to discover which modules to load.
*
* @param string $environment
*/
public static function getMergedConfig($environment)
{
$configs = array();
$config_path = dirname(__FILE__).'/';

// Get core and local configs and extract active modules
$active_modules = array();
foreach (array('core', 'local') as $config_level) { //48 строка
$configs[$config_level][] = require $config_path.$config_level.'/common.php';
if (file_exists($config_path.$config_level."/$environment.php")) {
$configs[$config_level][] = include $config_path.$config_level."/$environment.php";
}
if (file_exists($config_path.$config_level.'/admin.php')) {
$configs[$config_level][] = include $config_path.$config_level.'/admin.php';
}
foreach ($configs[$config_level] as $config) {
if (isset($config['modules'])) {
$active_modules = CMap::mergeArray($active_modules, $config['modules']);
}
}
}

// Get module configs
$modules_path = dirname(__FILE__).'/../modules/';
$processed_modules = array();
foreach ($active_modules as $module_key => $module_name) {
if (is_array($module_name)) {
$module_name = $module_key;
}
if (!in_array($module_name, $processed_modules)) {
$processed_modules[] = $module_name;

// Import event type module's models folder
// FIXME: We need a better way of handling this
if (substr($module_name, 0, 3) == 'Oph') {
$configs['modules'][] = array(
'import' => array(
'application.modules.'.$module_name.'.models.*',
),
);
}

$configs = self::importModuleConfig($modules_path, $module_name, $environment, $configs);
}
}

// Merge configs
$merged_config = array(
'basePath' => dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
);
foreach (array('core', 'modules', 'local') as $config_group) {
if (isset($configs[$config_group])) {
foreach ($configs[$config_group] as $config) {
$merged_config = CMap::mergeArray($merged_config, $config);
}
}
}

return $merged_config;
}

public static function importModuleConfig($modules_path, $module_name, $environment, $configs)
{
foreach (array($modules_path.$module_name.'/config/common.php', $modules_path.$module_name."/config/$environment.php") as $config_file) {
if (file_exists($config_file)) {
$config = include $config_file;
$configs['modules'][] = $config;

if (!empty($config['modules'])) {
foreach ($config['modules'] as $module_name2) {
$configs = self::importModuleConfig($modules_path, $module_name2, $environment, $configs);
}
}
}
}

return $configs;
}
}

Вот скрин с правами доступа, якобы несуществующего файла
[pic=224950060]

Код Index.php
<?php

$dirname = dirname(__FILE__);
if (file_exists($dirname . '/vendor/autoload.php')){
require_once($dirname . '/vendor/autoload.php');
}

if (file_exists($dirname . '/vendor/yiisoft/yii/framework/yii.php')) {
$yii = $dirname . '/vendor/yiisoft/yii/framework/yii.php';
} else {
$yii = $dirname . '/protected/yii/framework/yii.php';
}
$config = $dirname . '/protected/config/main.php';
$common_config = $dirname . '/protected/config/core/common.php';
$local_common_config = $dirname . '/protected/config/local/common.php';

foreach (array($common_config, $local_common_config) as $configfile) {
foreach (@file($configfile) as $line) { //33 строка
if (preg_match('/^[\s\t]+\'environment\'[\s\t]*=>[\s\t]*\'([a-z]+)\'/', $line, $m)) {
$environment = $m [1];
}
}
}

if (isset ($environment) && $environment === 'dev') {
define('YII_DEBUG', true);
}

// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3);

require_once($yii);
Yii::createWebApplication($config)->run();

И вот что висит на сайте



Помогите решить проблему.
Тема закрыта Sheogorrath

Комментарии (9)

там не написано что файла нет. ошибка сервера 500 же
Лог апач первым пунктом, обрати внимание
так у тебя config файл назван common.php?
Зачем у тебя вообще так сделано?
foreach (array($common_config, $local_common_config) as $configfile)

там же два одинаковых имени файла у тебя.

и почему сам common.php не показал?
или его как раз и нет у тебя совсем?
Скрипт не мой, сижу разбираюсь
Тему внимательно читал?
У тебя нет файла common.php, а не того файла содержимое которого ты привел
Закрыто по просьбе автора
Показать комментарий
Скрыть комментарий
Для добавления комментариев необходимо авторизоваться
Архив тем
Танки. Стальной легион
Десятки видов техники, тяжелые бои и секретные...
Тема: Светлая | Тёмная
Версия: Mobile | Lite | Touch | Доступно в Google Play