РЕШЕНО — is_file(): open_basedir restriction in effect … все просто!

Сегодня возник косяк с сервером и вместо сайта выдает текст ошибки, что на скриншоте выше + ещё 14 бонусных ошибок следом. Но я думаю не стоит расстраиваться, в этой статье мы решим эту проблему.






И так вот эта веселая ошибка текстом,

is_file(): open_basedir restriction in effect. File(/usr/share/pear/Twig_Loader_Filesystem.php) is not within the allowed path(s): (/var/www/…/data:.)

/var/www/…/data/www/…./framework/yiilite.php(225)

сайт убрал специально, что бы было легко понять ( вместо сайта стоят …).

</pre>
<pre>else if(isset(self::$_coreClasses[$className]))
<span class="ln">214</span>             include(YII_PATH.self::$_coreClasses[$className]);
<span class="ln">215</span>         else
<span class="ln">216</span>         {
<span class="ln">217</span>             // include class file relying on include_path
<span class="ln">218</span>             if(strpos($className,'\\')===false)  // class without namespace
<span class="ln">219</span>             {
<span class="ln">220</span>                 if(self::$enableIncludePath===false)
<span class="ln">221</span>                 {
<span class="ln">222</span>                     foreach(self::$_includePaths as $path)
<span class="ln">223</span>                     {
<span class="ln">224</span>                         $classFile=$path.DIRECTORY_SEPARATOR.$className.'.php';
<span class="error"><span class="ln error-ln">225</span>                         if(is_file($classFile))
</span><span class="ln">226</span>                         {
<span class="ln">227</span>                             include($classFile);
<span class="ln">228</span>                             break;
<span class="ln">229</span>                         }
<span class="ln">230</span>                     }
<span class="ln">231</span>                 }
<span class="ln">232</span>                 else
<span class="ln">233</span>                     include($className.'.php');
<span class="ln">234</span>             }
<span class="ln">235</span>             else  // class name with namespace in PHP 5.3
<span class="ln">236</span>             {
<span class="ln">237</span>                 $namespace=str_replace('\\','.',ltrim($className,'\\'));

</pre>
<pre>

РЕШЕНИЕ ДАННОЙ ОШИБКИ ПРОСТОЕ

Просто находим httpd  на своем сервере для конкретного домена и меняем в двух строчках текст путь на «none». Ниже  выкинул весь конфиг для данного сайта, а за ним исправленный конфиг.

<VirtualHost 319.139.209.49:80>
 ServerName afirewall.ru
 ServerAlias www.afirewall.ru
 DocumentRoot /var/www/afirewall.ru/data/www/afirewall.ru
 ServerAdmin mon1111@gmail.com
 AddDefaultCharset off
 SuexecUserGroup afirewall.ru afirewall.ru
 CustomLog /var/www/httpd-logs/afirewall.ru.access.log combined
 ErrorLog /var/www/httpd-logs/afirewall.ru.error.log
 <FilesMatch "\.ph(p[3-5]?|tml)$">
 SetHandler application/x-httpd-php
 </FilesMatch>
 <FilesMatch "\.phps$">
 SetHandler application/x-httpd-php-source
 </FilesMatch>
 <IfModule php5_module>
 php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f mon3123123@gmail.com"
 php_admin_value upload_tmp_dir "/var/www/afirewall.ru/data/mod-tmp"
 php_admin_value session.save_path "/var/www/afirewall.ru/data/mod-tmp"
 php_admin_value open_basedir "/var/www/afirewall.ru/data:."
 </IfModule>
 <IfModule php7_module>
 php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f mon3123123@gmail.com"
 php_admin_value upload_tmp_dir "/var/www/afirewall.ru/data/mod-tmp"
 php_admin_value session.save_path "/var/www/afirewall.ru/data/mod-tmp"
 php_admin_value open_basedir "/var/www/afirewall.ru/data:."
 </IfModule>
</VirtualHost>
<Directory /var/www/afirewall.ru/data/www/afirewall.ru>
 Options +Includes -ExecCGI
 <IfModule php5_module>
 php_admin_flag engine on
 </IfModule>
 <IfModule php7_module>
 php_admin_flag engine on
 </IfModule>
</Directory>
<Directory /var/www/afirewall.ru/data/www/afirewall.ru/webstat>
 DirectoryIndex index.html
 AddDefaultCharset UTF-8
</Directory>

Стоит обратить внимание на следующую строку

php_admin_value open_basedir "/var/www/afirewall.ru/data:."

и заменить её на эту

php_admin_value open_basedir "none"

Ниже правильно изменённый конфиг для сайта с уже внесенными исправелниями:

<VirtualHost 312.132.226.429:80>
 ServerName afirewall.ru
 ServerAlias www.afirewall.ru
 DocumentRoot /var/www/afirewall.ru/data/www/afirewall.ru
 ServerAdmin mon31231231@gmail.com
 AddDefaultCharset off
 SuexecUserGroup afirewall.ru afirewall.ru
 CustomLog /var/www/httpd-logs/afirewall.ru.access.log combined
 ErrorLog /var/www/httpd-logs/afirewall.ru.error.log
 <FilesMatch "\.ph(p[3-5]?|tml)$">
 SetHandler application/x-httpd-php
 </FilesMatch>
 <FilesMatch "\.phps$">
 SetHandler application/x-httpd-php-source
 </FilesMatch>
 <IfModule php5_module>
 php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f mon123123123@gmail.com"
 php_admin_value upload_tmp_dir "/var/www/afirewall.ru/data/mod-tmp"
 php_admin_value session.save_path "/var/www/afirewall.ru/data/mod-tmp"
 php_admin_value open_basedir "none"
 </IfModule>
 <IfModule php7_module>
 php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f mon12312312312@gmail.com"
 php_admin_value upload_tmp_dir "/var/www/afirewall.ru/data/mod-tmp"
 php_admin_value session.save_path "/var/www/afirewall.ru/data/mod-tmp"
 php_admin_value open_basedir "none"
 </IfModule>
</VirtualHost>
<Directory /var/www/afirewall.ru/data/www/afirewall.ru>
 Options +Includes -ExecCGI
 <IfModule php5_module>
 php_admin_flag engine on
 </IfModule>
 <IfModule php7_module>
 php_admin_flag engine on
 </IfModule>
</Directory>
<Directory /var/www/afirewall.ru/data/www/afirewall.ru/webstat>
 DirectoryIndex index.html
 AddDefaultCharset UTF-8
</Directory>

Обязательно после сохранения перезагрузить httpd службу или весь сервер ( не принципиально)

Поздравляю на этом все!

Если остались вопросы по данному решению, пишите в комментариях, будем рады помочь и ответить на ваши вопросы.






Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *