Sidebar |
cygwin
PHP Fatal error: Out of memory (allocated 49807360) (tried to allocate 2140027 bytes) in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 451
451: $result = zlib_decode($result); なぜか50MBしか割り当てられていないとエラーが表示されます。 確認するが 512MBきちんと割り当てられている。 php -i | grep memory_limit
memory_limit => 512M => 512M
php -r "\$s = str_repeat(' ', 1000*1000*1000);"
PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 1000000024 bytes) in Command line code on line 1
zlib_decode関数が怪しい ということでzlib_decode関数をいじめてみます。 php -r "\$s = zlib_encode(' ',ZLIB_ENCODING_DEFLATE); str_repeat(\$s, 100*1000*1000);"
PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 900000024 bytes) in Command line code on line 1
予想と違う結果で、きちんと設定値が返ってきました。ということは、 ・cygwinのphpにメモリリーク ・phar がメモリを食いつぶしている ・composer がメモリを食いつぶしている あたりが疑われます これ以上の追及は時間の無駄(というかわからない)なので dosプロンプトで実行して解決 curl -O https://getcomposer.org/composer.phar
php composer.phar オプション >pip3 list --o
pip (9.0.3) - Latest: 10.0.1 [wheel]
setuptools (39.0.1) - Latest: 39.2.0 [wheel] You are using pip version 9.0.3, however version 10.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. python3最新版をいれたのにアップグレードが表示されるとは・・・。 >pip3 install --upgrade pip Collecting pip
Downloading https://files.pythonhosted.org/packages/.../pip-10.0.1-py2.py3-none-any.whl (1.3MB) Installing collected packages: pip Found existing installation: pip 9.0.3 Uninstalling pip-9.0.3: Successfully uninstalled pip-9.0.3 Successfully installed pip-10.0.1 >pip3 list --o Package Version Latest Type
---------- ------- ------ ----- setuptools 39.0.1 39.2.0 wheel さくらインターネット ライトプラン で django2.0 + python3.6
執筆:2018.06.15
編集:2018.06.15 設定の仕方 導入方法は関連ページへ
サイト内 関連ページ 応答速度
ブラウザだとdjangoは少し遅く感じますが、機械的な取得だとほぼ同じという結果になりました。 djangoのデフォルトページに描画処理があるせいでブラウザだと遅いのかもしれないですね pythonのほうは、この速度にさらに表示用のなんらかの処理を加えることになるので phpのほうがcgi応答速度は速いということになります。 djangoは脆弱性がわりとあるようなので、ライトプランというcronが動作しない自動更新できない環境ではちょっと勇気がいる djangoの導入は見送りになりそう。 キーワード Django2 CGI handler
Django2 CGI handler さくらインターネット 共有サーバー Django2 python3 さくらインターネット 共有サーバー django 脆弱性 AH01215: suexec policy violation: see suexec log for more details
執筆:2018.06.14
編集:2018.06.14 AH01215: suexec policy violation: see suexec log for more details さくらインターネット .cgiの1行目のパスを間違っていた #!/home/ユーザー名/local/bin/実行名 ユーザー名を間違っていて(契約とは違う別のアカウントを指定していたため) 気が付くのに1時間以上かかってしまった。 「パスがありませんでした」くらいのメッセージにしてくださいよ。 Django2 CGI handler + apache2.4 : メモ
執筆:2018.06.13
編集:2018.06.13 概要 python3.6 + django 2.0.6
基本的に wsgi_over_cgi.py 内の from wsgiref.handlers import CGIHandler
だけで動かないといけないのですが、django内の処理が間違っているために、環境変数名の変更 及びfrom . import wsgi app = wsgi.get_wsgi_application() CGIHandler().run(app) PATH_INFO、FORCE_SCRIPT_NAMEの変更設定がwsgi_emulate.py または wsgi_over_cgi.py および setting.py内に追加されています。 IfModuleで条件指定しているため wsgiモジュールが有効になった場合は自動的にwsgiで動作する 必要な設定 .htaccess # 追加分
<IfModule !mod_wsgi.c> <FilesMatch "\.(?i:pyc?)$"> order deny,allow deny from all # RewriteRule "" - [L,R=404] </FilesMatch> # wsgi_emulate.py 内で この値をもとに正しいURLを生成できるように成形される setenv BASE_URI / # / or /pathtositetop setenv SCRIPT_URL / # / or /pathtositetop/ RewriteRule "^$" start-django.cgi [L,T=application/x-httpd-cgi] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule "." start-django.cgi [L,T=application/x-httpd-cgi] </IfModule> apacheが古くて、環境変数が渡らない場合は start-django.cgi に以下を追加する os.environ.setdefault("BASE_URI", "/") # / or /pathtositetop
こちらに書き込んでいたほうが確実だろうos.environ.setdefault("SCRIPT_URL", "/") # / or /pathtositetop/ 表示されない場合
# https://pypi.python.org/pypi/pytz#downloads python3をインストール : さくらインターネット ライトプラン
さくらインターネットの Ruby と Python は古すぎて使い物にならない Ruby /usr/local/bin/ruby 1.8.7
Python /usr/local/bin/python 2.7.6
2018/06
ローカルのcygwinでバージョンを見ると ruby 2.3.6
Python2 2.7.14 Python3 3.6.4
virtualboxにいれているテスト用のfreebsd9でも Python 2.7.13 が返ってくる(pkg upgradeとうったが最新だよっていわれ、もう更新できない。) FreeBSD9は tlsv1 なので 最新のものに更新していない古いバイナリを実行すると 'SSLError(SSLError(1, '[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:833)'),)'
などのエラーが発生するさくらインターネットで使われている python 2.7.6はいつごろか追うと 2014Q3 ということがわかった。 2014Q4からは、2.7.8になっているので 4年以上も放置されているということになる ということで、pythonを使いたい人はさくらインターネットの共有サーバーはやめておいたほうがいいでしょう。 OSのアップグレード待つか、新規契約して新しいサーバーに移るしかないですね。 注意点(リスク) せっかくインストールしてもサーバーOSがアップグレードされると
.soファイルのリンク切れで
自前Buildアプリはすべてダウンしてしまうので気を付けましょう
さくらインターネットは FreeBSD9(FreeBSD 9.1) で FreeBSD9のFreeBSD公式サポートはかなり前に終了していて(9.1:2014 年 12 月 31 日, 9シリーズ:最終 2016 年 12 月 31 日) osのライブラリも古いので 自前buildは あまりお勧めしない。 現在のFreeBSDのカレントブランチは 11 で 来年には12がリリースされる perlの切り替えができるので、pythonでも切り替えは技術的には可能なはずなので サポートに pythonの切り替え機能の要望を出したほうが無難でしょう » 続きを読む PHP Laravel 5.6 のインストール
(1) サーバー要件 PHP7.1の最新版以降
必要なPHP拡張
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
XML PHP Extension
Ctype PHP Extension
JSON PHP Extension
この内容は、公式サイトで最新版を確認しよう(2) インストール準備 composerが必要なのでない場合は、ダウンロードする curl -o https://getcomposer.org/composer.phar (3) インストール 最新版 php composer.phar create-project laravel/laravel --prefer-dist インストール先 バージョンを指定する場合 php composer.phar create-project laravel/laravel --prefer-dist インストール先 5.6 (例) php composer.phar create-project laravel/laravel --prefer-dist laravel (4) 更新 インストール先に移動後 php composer.phar update を実行すると最新版に更新される アクセス インストール先/public にアクセスるとデフォルトのサイトが表示される。 この内容は、resources/views/welcome.blade.php が表示されている 公開先の変更 インストール先/public が公開URLとなっているので、 公開フォルダを変更するにはこの内容をコピーして、index.php内のrequireされているパスをインストール先に向くように書き換えれば好きな位置に移動できる。 ページ(URI)の追加 ページは routes/web.php で一括管理されている。 Route::get('/demo/{name?}', function ($name=null) { return 'Hello'; }); を追加すると /demoにあくせすると Hello と表示されるようになる 404エラーにする場合は、return App::abort(404); を返すといいだろう ページ移動は、Route::redirect('/移動元', URL::to('/移動先'), 301); を利用する 詳しい設定はデフォルトのページからいけるDoccumentを参考にしよう。 テンプレート(blade) デバッグ時にバージョンを表示するサンプル @if (config('app.debug')) Laravel {{ app()->version() }} @else @endif |
Sidebar |