Sidebar |
laravel 5.6 定義済み グローバル関数
ヘルパー関数でグローバル関数が定義されているので注意されたい。 次のコマンドで検索することができる find . -type f -name "helpers.php"
./vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
./vendor/laravel/framework/src/Illuminate/Support/helpers.php
./vendor/mockery/mockery/library/helpers.php
次のコマンドで、関数一覧を表示できる grep "function_exists" ファイル名 | grep -oP "'.+'" | sort
エラー "Too few arguments to function redirect(), 0 passed in vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php on line 107 and exactly 1 expected "
はい。検索 redirect
グローバル関数 redirect かぶり見たいですね。
Laravelに既存のプロジェクトを移行しようと思ったのですが namespace使うように書き換えるか、既存のプロジェクトのredirect関数を別名に変更するしかないですね。 当然一括置換できる後者しか選択の余地がないですね。 ここで定義されています vendor/laravel/framework/src/Illuminate/Foundation/helpers.php このファイルで定義されいる同名関数が使われている場合は、誤動作する可能性がある。 一覧 vendor/laravel/framework/src/Illuminate/Foundation/helpers.php '__'
'abort' 'abort_if' 'abort_unless' 'action' 'app' 'app_path' 'asset' 'auth' 'back' 'base_path' 'bcrypt' 'broadcast' 'cache' 'config' 'config_path' 'cookie' 'csrf_field' 'csrf_token' 'database_path' 'decrypt' 'dispatch' 'dispatch_now' 'elixir' 'encrypt' 'event' 'factory' 'info' 'logger' 'logs' 'method_field' 'mix' 'now' 'old' 'policy' 'public_path' 'redirect' 'report' 'request' 'rescue' 'resolve' 'resource_path' 'response' 'route' 'secure_asset' 'secure_url' 'session' 'storage_path' 'today' 'trans' 'trans_choice' 'url' 'validator' 'view' vendor/laravel/framework/src/Illuminate/Support/helpers.php 'append_config'
'array_add' 'array_collapse' 'array_divide' 'array_dot' 'array_except' 'array_first' 'array_flatten' 'array_forget' 'array_get' 'array_has' 'array_last' 'array_only' 'array_pluck' 'array_prepend' 'array_pull' 'array_random' 'array_set' 'array_sort' 'array_sort_recursive' 'array_where' 'array_wrap' 'blank' 'camel_case' 'class_basename' 'class_uses_recursive' 'collect' 'data_fill' 'data_get' 'data_set' 'dd' 'e' 'ends_with' 'env' 'filled' 'head' 'kebab_case' 'last' 'object_get' 'optional' 'preg_replace_array' 'retry' 'snake_case' 'starts_with' 'str_after' 'str_before' 'str_contains' 'str_finish' 'str_is' 'str_limit' 'str_plural' 'str_random' 'str_replace_array' 'str_replace_first' 'str_replace_last' 'str_singular' 'str_slug' 'str_start' 'studly_case' 'tap' 'throw_if' 'throw_unless' 'title_case' 'trait_uses_recursive' 'transform' 'value' 'windows_os' 'with' 何年か前に
Windows10アップデートで エクスプローラーのコマンドプロンプトが 勝手にPowershellに変わりました。 エクスプローラーの右クリックに コマンドプロンプトを追加する方法です。 regeditを実行 HKEY_CLASSES_ROOT\Directory\Background\Shell に移動します 新規キーで以下を追加します(cmd_prompt, cmd_prompt\command) HKEY_CLASSES_ROOT\Directory\Background\Shell\cmd_prompt (既定) コマンド プロンプト HKEY_CLASSES_ROOT\Directory\Background\Shell\cmd_prompt\command (既定) cmd.exe /s /k pushd "%V" 以上で追加は完了です。 cmdという名前は、windowsが管理しているので名前はcmd_promptにしています。 ファイルに保存してクリック登録という方法もあります コマンドプロンプト追加.reg Windows Registry Editor Version 5.00 コマンドプロンプト Unicode 絵文字
DOSプロンプト
🍎 りんご
をメモ帳でUTF-8を指定して保存する© (c) ㊞ 〇印 先ほど作成したショートカットをクリックして、コマンドプロンプトを開き type 保存したファイル.txt を実行し、UTF-8文字が表示できることを確認する 下2つが正常に表示されない場合は、フォント 「MS ゴシック」を選択する 残念ながら、筆者のPCでは、絵文字🍎が表示できるフォントが一覧に表示されなかった。 まず使うことはないと思うが UTF16を使いたい場合は、chcp 850 とする 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 /usr/bin/ld: warning: libssl.so.8, needed by /usr/local/lib/libcurl.so, may conflict with libssl.so.9
メンテナンスさていないOSのSSLライブラリが違うために起きる現象 原因 ・OSの使っているSSLのライブラリを使用していない ・ライブラリに新しいバージョンのSSLをインストールして、内部で混在している 例) さくらインターネットの共有サーバー(FreeBSD9, -2018)
OSのSSLにあわせる場合 ./configure オプション \
--with-ssl=/usr/local/ssl エラーの出たアプリを作成する際に--with-sslを適切な値に変更する
opensslを$HOME/localなどに入れたものを引き続き使用する場合 crulをソースからインストールし、それを利用するようにconfigureオプションを修正する
./configure --prefix=$HOME/local/curl \
--with-ssl=$HOME/local/ssl libtool: link: warning: library was moved.
パスを移動した場合に表示される 表示されている 「ファイル名.la」は、テキストファイルなので LF改行が認識できるエディタで ファイルを開き libdir='/usr/local/lib' となっていることろを適切なパスに書き換えて保存すれば直る さくらインターネット ライトプラン で 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 |
Sidebar |